angular - 如何识别哪个组件/服务抛出了错误,同时使用全局 HTTP 拦截器作为 Angular 中的错误处理程序?
问题描述
我正在使用 HTTPInterceptor 来处理 Angular 应用程序中发生的任何错误。一旦发生错误,它就会被这个拦截器抛出并处理。但是,一旦向拦截器抛出错误,我想确定哪个组件或服务抛出了该错误。
我期望以下,如果 main.service.ts 是发生错误的服务,我想在我的 HTTPInterceptor 类中获取名称“main.service.ts”。
解决方案
我没有得到引发错误的组件,但是我们可以确定哪个方法引发了错误。我们需要一个名为“extract-stack”的包
npm install extract-stack
然后,获取函数名称如下。即使在生产模式下,Angular 也不会更改函数名称,因此我们可以捕获发生错误的方法,如 -:
var function_name = extractStack.lines(errors)[0].split('.')[1].split(' ')[0];