Как обрабатывать глобальные ошибки до / во время запуска приложения в рамках обещания Aurelia / Bluebird

Я добавляю обработку ошибок Raygun в свое приложение Aurelia и только что понял, что не могу отловить ошибки, возникающие во время настройки приложения (например, в main.configure).

Вот код, который вообще не использует Raygun, а просто пытается перехватить все ошибки:

index.html

<!DOCTYPE html>
<html>
<head>
    <!-- ... -->
</head>

<body aurelia-app="main">
<script src="build/res/vendor-bundle.js" data-main="aurelia-bootstrapper"></script>
<script type="text/javascript">
    window.onerror = function() {
        console.info('arguments:', arguments);
    }
</script>
</body>
</html>

main.ts

// ...
export function configure(aurelia: Aurelia) {
    aurelia.use
        .standardConfiguration()
        .feature('resources');

    // ...

    blah.this = 3; // <-- Force some error...
}

Ошибка регистрируется в консоли, но onerror Обработчик в моем индексном файле не вызывается. Также Аврелии внутренние ConsoleAppender.Error не вызывается, так как я думаю, что он не настроен / активирован на этом этапе.

Следование стека в инструментах разработчика приводит меня к этому коду...

function tryCatcher() {
    try {
        var target = tryCatchTarget;
        tryCatchTarget = null;
        return target.apply(this, arguments);
    } catch (e) {
        errorObj.e = e;
        return errorObj;
    }
}

... который, я думаю, исходит от Bluebird...

Как я могу надежно отловить все ошибки в моем приложении?


Вот скриншот зарегистрированной ошибки:

  • vendor-bundle.js:3411 приводит к tryCatcher упомянутое выше
  • app-bundle.js:72:9 (1-я запись в stacktrace) приводит к фактической строке ошибки blah.this = 3
  • Bluebirds unhandledRejection & rejectionHandled события не происходят в этом сценарии...

0 ответов

Другие вопросы по тегам