BetterJS / badjs-report

monitor error and report
MIT License
1.14k stars 193 forks source link

[BJ-REPORT] TypeError: Cannot read property 'apply' of undefined #23

Closed acrens closed 7 years ago

acrens commented 7 years ago

全局异常监控的时候,会一直提示并在控制台输出 [BJ-REPORT] TypeError: Cannot read property 'apply' of undefined,请问这是为什么?

loskael commented 7 years ago

能提供更具体一点的信息吗? 错误应该是这里触发的 https://github.com/BetterJS/badjs-report/blob/74b3fdd35b9104d7a888f540d6fc3d00cf1ad9f3/src/bj-wrap.js#L34-L43

acrens commented 7 years ago

是的,调试的时候发现就是上面那段代码处提示的。window.BJ_REPORT.tryJs().spyAll(); 引入了这一句就一直循环报以上错误,我的项目是遵循 AMD 规范开发。

loskael commented 7 years ago

刚 review 了一下 cat 的调用, 发现只有一个地方没哟做 isFunction 的判断 https://github.com/BetterJS/badjs-report/blob/74b3fdd35b9104d7a888f540d6fc3d00cf1ad9f3/src/bj-wrap.js#L83

关于 setTimeout 和 setInterval 之前有过讨论, 参考: https://github.com/imweb/tryjs/issues/3

想问一下, 你这里报错的浏览器环境是什么?

acrens commented 7 years ago

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

我的代码: var isDev = window.location.href.indexOf('.net') >= 0; window.BJ_REPORT.init({ id: isDev ? 98 : 99, // 开发环境98,生产环境99 endpoint: '...', // 接口 project : 'f2e', logstore: 'f2e', app : 'testApp' }); window.BJ_REPORT.tryJs().spyAll(); 我的目的是实现全局异常监控。

loskael commented 7 years ago

我在 chrome 57 下并不能重现你说的这个问题

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36

能不能提供一个最简单的重现场景?

acrens commented 7 years ago

非常抱歉,我把整个源码阅读并调试了一遍,是我们这边有人把源码稍示修改了,导致出现一些问题,并不是这边代码出问题,谢谢