text: /*
   * @Author: your name
   * @Date: 2020-04-27 01:09:56
   * @LastEditTime: 2020-05-06 16:41:09
   * @LastEditors: Please set LastEditors
   * @Description: In User Settings Edit
   * @FilePath: \vue-cms\vue-element-admin\src\utils\error-log.js
   */
  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)
      })
    }
  }
  