You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
920 B
35 lines
920 B
import Vue from 'vue'
|
|
import store from '@/store'
|
|
import { isString, isArray } from '@/utils/validate'
|
|
import settings from '@/settings'
|
|
|
|
// you can set in settings.js
|
|
// errorLog:'production' | ['production', 'development']
|
|
const { errorLog: needErrorLog } = settings
|
|
|
|
function checkNeed() {
|
|
const env = process.env.NODE_ENV
|
|
if (isString(needErrorLog)) {
|
|
return env === needErrorLog
|
|
}
|
|
if (isArray(needErrorLog)) {
|
|
return needErrorLog.includes(env)
|
|
}
|
|
return false
|
|
}
|
|
|
|
if (checkNeed()) {
|
|
Vue.config.errorHandler = function(err, vm, info, a) {
|
|
// Don't ask me why I use Vue.nextTick, it just a hack.
|
|
// detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500
|
|
Vue.nextTick(() => {
|
|
store.dispatch('errorLog/addErrorLog', {
|
|
err,
|
|
vm,
|
|
info,
|
|
url: window.location.href
|
|
})
|
|
console.error(err, info)
|
|
})
|
|
}
|
|
}
|
|
|