Blame view

src/utils/error-log.js 920 Bytes
d7d9c38c2   Adam   auto commit the c...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  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)
      })
    }
  }