В моем проекте 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);
}
My 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);
}
Любая идея, как я могу использовать версию приложения в приведенном выше коде, чтобы все ошибки сообщались правильно?