只记录前端页面报错,可以定位错误源
vue.config.js
1 2 3 4
   | configureWebpack: {      devtool: 'nosources-source-map' }
  | 
 
index.html
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 36 37 38 39 40 41 42 43 44 45 46
   | window.addEventListener("error",   function (e) {     console.log('<%= process.env.NODE_ENV %>');     if ('<%= process.env.NODE_ENV %>' === 'development') {       console.log(e)       return     }     e.stopImmediatePropagation();     var srcElement = e.srcElement;     var params = {}
      var u = navigator.userAgent;     var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;      var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);     var isAlipay = !!u.match(/Alipay/i);     var isWechat = !!u.match(/MicroMessenger/i);     var appPlatFrom = isAndroid ? 'Android' : isiOS ? 'ios' : '';     var appFrom = (isWechat ? 'wechat_xcx' : isAlipay ? 'alipay_xcx' : '') || 'wechat_xcx';
      if (srcElement !== window) {       params = {         at_time: dataFormat(new Date(), 'second'),         info: JSON.stringify({           message: '网络请求错误',           event: 'windowError',           nodeTag: srcElement.tagName,           stack: srcElement.href || srcElement.src,         }),         url: window.location.href,         from: isWechat ? '1' : isAlipay ? '3' : '5'       }     }     console.log(params);     Ajax({       method: 'POST',       url: 'https://xxx.com',       data: params,       header: [         {           key: 'appPlatFrom',           value: appPlatFrom         },       ]     })   }, true );
  | 
 
store.js
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 36 37 38 39 40
   | import { dataFormat } from './tools'; import store from '../store';
  export default (err, vm, info) => {   if (process.env.NODE_ENV === 'development') {     console.log(err)     return   }   const time = dataFormat(new Date(), 'second')   try {     var isAlipay = !!navigator.userAgent.match(/Alipay/i);     var isWechat = !!navigator.userAgent.match(/MicroMessenger/i);     const params = {       at_time: time,       info: JSON.stringify({         message: err.message,         stack: err.stack,         nodeTag: vm.$vnode.tag,         event: info       }),       url: window.location.href,       from: isWechat ? '1' : isAlipay ? '3' : '5',     }     console.log(params);     console.log(err);          store.dispatch('postErrorInfo', { data: params, callback: () => {} })   } catch (error) {          const params = {       time,       errorInfo: error,       url: window.location.href,     }     console.log(params);          store.dispatch('postErrorInfo', { data: params, callback: () => {} })   }   return false }
  |