我正在尝试在 Angular 5 项目上设置 Sentry 。指令显示一个对象被放置在提供者中,如下所示:
import * as Raven from 'raven-js';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ErrorHandler } from '@angular/core';
import { AppComponent } from './app.component';
Raven
.config('https://KEY')
.install();
export class RavenErrorHandler implements ErrorHandler {
handleError(err:any) : void {
Raven.captureException(err.originalError);
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ],
providers: [ { provide: ErrorHandler, useClass: RavenErrorHandler } ]
})
export class AppModule { }
我的项目在 providers 数组中还有一些东西,看起来像这样:
providers: [
{ provide: ErrorHandler, useClass: RavenErrorHandler }, //sentry
MapDataService,
GraphService
]
这在 Angular 上允许吗?我问这个是因为我对此很陌生,我无法让 Sentry 工作,我只是对这部分感到不安,在我开始查看其他地方之前,我想看看这是否可行。
最佳答案
这完全没问题。您正在 AppModule 中注册三个提供者 - ErrorHandler
、MapDataService
和 GraphService
。
还说每次应用程序需要 ErrorHandler 时,它应该使用您自己的 RavenErrorHandler
。
关于angular - 将对象放入@NgModule 中的提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50235894/