// +---------------------------------------------------------------------- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ] // +---------------------------------------------------------------------- // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 // +---------------------------------------------------------------------- // | Author: CRMEB Team // +---------------------------------------------------------------------- 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) { // 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, }); }); }; }