我正在尝试在我的应用程序中实现哨兵错误处理,现在我已经按预期设置了它并可以正常工作。.但是现在我希望能够在Sentry对象上传递用户信息以更好地记录错误。
所以我有以下设置
export class SentryErrorHandler implements ErrorHandler {
userInfo: UserInfo;
constructor(
private _store: Store<AppState>
) {
this.getUserInfo();
}
getUserInfo() {
this._store.select('userInfo')
.subscribe(result => {
this.userInfo = result;
});
}
handleError(err: any): void {
Sentry.configureScope((scope) => {
scope.setUser({
email: this.userInfo?.emailAddress,
id: this.userInfo?.id?,
});
});
const eventId = Sentry.captureException(err.originalError || err);
Sentry.showReportDialog({ eventId });
}
}
并且我在我的根模块中像这样提供错误处理程序
// ...
{ provide: ErrorHandler, useClass: SentryErrorHandler }
// ...
但是发生的是,当我启动应用程序时出现以下错误
显然我在这里做错了,任何帮助将不胜感激!
发生此错误是因为没有@Injectable
装饰器,Angular无法连接该类的依赖项(即使在提供程序中使用它也是如此。)>
所以您要做的就是在错误类中添加@Injectable()
装饰器。