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) }) } }