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