赞
踩
公司内部的埋点监控系统近期发现我负责的系统有以下的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一个调度文件
源码截图如下:
找到上面的图片,我以为是哪块使用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)
- }
问题最终得到完美解决!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。