0

在我的 Ionic 项目中,我想使用 Bugsnag 自动报告所有异常。

为此,正在使用自定义错误处理程序。但是,它仅适用于已处理的异常(因此它不会捕获未处理的异常)。我发现它是由异步 ErrorHandlerFactory 引起的:

async function getAppVersionNumber() {
  return await new AppVersion().getVersionNumber().then(ver => ver) || null;
}

export async function errorHandlerFactory() {

  let version = await getAppVersionNumber();
  const bugsnagClient = bugsnag(
    {
      apiKey: CONFIG.bugsnagApiKey,
      appVersion: version,
    });

  return new BugsnagErrorHandler(bugsnagClient);
}

我的 app.module.ts:

@NgModule({
  declarations: [
    // commented out
  ],
  imports: [
    // commented out
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    // commented out
  ],
  providers: [
    { provide: ErrorHandler, useFactory: errorHandlerFactory },
    // commented out
  ]
})
export class AppModule {
}

如果我从上面删除 await/async,错误报告会按预期工作,但我在 bugsnag 中报告的版本总是“未知”:

export function errorHandlerFactory() {
  let version = 'UNKNOWN';
  new AppVersion().getVersionNumber().then(ver => {
    version = ver;
  });

  const bugsnagClient = bugsnag(
    {
      apiKey: CONFIG.bugsnagApiKey,
      appVersion: version || null,
    });

  return new BugsnagErrorHandler(bugsnagClient);
}

知道如何在上述代码中使用应用程序版本并正确报告所有错误吗?

4

0 回答 0