将存储注入到错误处理程序类Angular中

问题描述 投票:0回答:1

我正在尝试在我的应用程序中实现哨兵错误处理,现在我已经按预期设置了它并可以正常工作。.但是现在我希望能够在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 }
// ...

但是发生的是,当我启动应用程序时出现以下错误

enter image description here

显然我在这里做错了,任何帮助将不胜感激!

javascript angular typescript sentry
1个回答
0
投票

发生此错误是因为没有@Injectable装饰器,Angular无法连接该类的依赖项(即使在提供程序中使用它也是如此。)>

所以您要做的就是在错误类中添加@Injectable()装饰器。

© www.soinside.com 2019 - 2024. All rights reserved.