| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { get, isObject } from 'lodash'
- import store from '@/store'
- import util from '@/utils/util'
- export default {
- install (Vue, options) {
- function writeLog (logType) {
- return (error, vm, info = '') => {
- Vue.nextTick(() => {
- store.dispatch('ibps/log/push', {
- message: `${info}: ${isObject(error) ? error.message : error}`,
- type: logType,
- meta: {
- error,
- vm
- }
- })
- if (process.env.NODE_ENV !== 'development') return
- util.log.capsule('ibps', 'ErrorHandler', logType)
- util.log.danger('>>>>>> 错误信息 >>>>>>')
- console.log(info)
- // util.log.danger('>>>>>> Vue 实例 >>>>>>')
- // console.log(vm)
- util.log.danger('>>>>>> Error >>>>>>')
- console.log(error)
- })
- }
- }
- if (process.env.NODE_ENV === 'development') {
- Vue.config.warnHandler = writeLog('warning')
- }
- Vue.config.errorHandler = writeLog('danger')
- window.onunhandledrejection = error => {
- store.dispatch('ibps/log/push', {
- message: get(error, 'reason.message', 'Unknown error'),
- type: 'danger',
- meta: {
- error: get(error, 'reason'),
- trace: get(error, 'reason.stack')
- }
- })
- }
- window.onerror = (event, source, lineno, colno, error) => {
- if (event === 'ResizeObserver loop limit exceeded') { // 忽略这个错误
- return
- }
- store.dispatch('ibps/log/push', {
- message: get(error, 'message', 'Unknown error'),
- type: 'danger',
- meta: {
- error,
- trace: get(error, 'stack'),
- source: `${source}@${lineno}:${colno}`,
- event: event
- }
- })
- }
- }
- }
|