【问题标题】:How to capture angular JavaScript errors using event listener如何使用事件侦听器捕获 Angular JavaScript 错误
【发布时间】:2021-08-07 13:03:56
【问题描述】:

我们想用 JavaScript 捕捉这两个错误

ERROR TypeError: Cannot read property 'big' of undefined
at t.brokenCode (main.6e3ef82a1a9a4d77938a.js:1)
at main.6e3ef82a1a9a4d77938a.js:1
at Uo (main.6e3ef82a1a9a4d77938a.js:1)
at s (main.6e3ef82a1a9a4d77938a.js:1)
at HTMLButtonElement.<anonymous> (main.6e3ef82a1a9a4d77938a.js:1)
at l.invokeTask (polyfills.00096ed7d93ed26ee6df.js:1)
at Object.onInvokeTask (main.6e3ef82a1a9a4d77938a.js:1)



ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'big' of undefined
TypeError: Cannot read property 'big' of undefined
at t.brokenCode (main.6e3ef82a1a9a4d77938a.js:1)
at t.n (main.6e3ef82a1a9a4d77938a.js:1)
at next (<anonymous>)
at main.6e3ef82a1a9a4d77938a.js:1
at new C (polyfills.00096ed7d93ed26ee6df.js:1)
at t.brokenAsyncCode (main.6e3ef82a1a9a4d77938a.js:1)
at main.6e3ef82a1a9a4d77938a.js:1
at Uo (main.6e3ef82a1a9a4d77938a.js:1)
at s (main.6e3ef82a1a9a4d77938a.js:1)
at HTMLButtonElement.<anonymous> (main.6e3ef82a1a9a4d77938a.js:1)
at Z (polyfills.00096ed7d93ed26ee6df.js:1)

我们正在使用事件处理程序来捕获这些错误,如下所示

window.addEventListener('error', function (event) {
console.log("error"+event);
});

window.addEventListener('unhandledrejection', function (event) {
console.log("unhandledrejection"+event);
 });

但是这两个错误不会触发这些事件, 那么我们如何捕捉这些错误呢?

我们有这两个功能:

brokenCode(): void { 
const something = 'DataInfo'; 
const bar = something + 0; 
bar.toString()[33].big(); 
} 

 async brokenAsyncCode(): Promise<void> { 
return Promise.resolve(this.brokenCode()); 
}

注意: 角度版本:12

由于 Zone.js,事件侦听器无法捕获角度 Jserror 因为 zone js 已经修改了事件监听器来实现 angular 的变化检测。

所以我在加载区域js之前尝试将错误事件列入黑名单, 但仍然无法使用事件侦听器捕获错误...

我们只想使用任何事件处理程序来处理这些错误。

谢谢...

【问题讨论】:

  • 看起来您可能会产生这些错误(brokenCodebrokenAsyncCode) - 请提供相关代码
  • window.addEventListener('unhandledrejection' 可能
  • “unhandledrejection”事件也不会触发这两个错误
  • 您确定错误发生在与您尝试捕获它的位置相同的文档中吗?不在框架或工人中?最好的方法当然是正确管理您使用的每个承诺的错误......

标签: javascript angularjs typeerror addeventlistener angular-promise


【解决方案1】:

您是否尝试过使用 AngularJS 原生 $exceptionHandler

您可以将此服务注册为模块上的工厂并捕获任何未处理的异常。 Check the docs 看看这个解决方案是否适合你。

【讨论】:

  • 感谢您的回复,但我想使用窗口事件监听器捕获事件,就像我在浏览器控制台添加事件监听器一样,它必须触发这些错误..
猜你喜欢
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多