在我的 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);
}
知道如何在上述代码中使用应用程序版本并正确报告所有错误吗?