由window.onerror报错引发的思考

前言:

公司内部的埋点监控系统近期发现我负责的系统有以下的js error报错信息出现,且频率非常高,搞的我心里有点慌…(ps: 公司内部规定,js error异常报错三周没有改善者, money会变少)

报错信息如下:

{
"errorMessage":"Uncaught SyntaxError: \"undefined\" is not valid JSON",
"scriptURI":"http://mdsygl-prod.store-cash-fe.apis.yonghui.cn/js/npm/scheduler.5282ff1e.js?17f7c55650dea7ebf76b",
"lineNo":10,
"columnNo":1587,
"error":{}
}

思考: 

于是带着这个问题,在网上寻找着答案,一开始我是沿着scriptURI这个源码的线索一直往下找,scheduler.5282ff1e.js文件其实是react一个调度文件

源码截图如下:

由window.onerror报错引发的思考_第1张图片

找到上面的图片,我以为是哪块使用postMessage导致的问题,正常的思维肯定是copy postMessage,然后在项目代码中去检索,然后一无所获…,项目中根据没有使用postMessage;

也是因为以上的解题思路彻底的把我带偏了,于是我换了种方式,直接带着报错信息去检索(ps: 万一是其他代码的连锁反应导致的呢?真实的异常代码反而被屏蔽了),于是我搜索了

\"undefined\" is not valid JSON" 这个报错信息,一路找下来,发现可能性比较大是因为JSON.parse导致的;

于是我尝试下JSON.parse(undefined), 果然报错信息一模一样;

紧接着,我在项目代码中检索JSON.parse, 发现好几处地方都是直接使用,我滴个乖乖,好家伙,终于逮到了。

解决办法:

let param =  ''
try {
param = JSON.parse(a)
} catch(error) {
  console.log(error)
}

问题最终得到完美解决!

你可能感兴趣的:(Javascript,javascript)