Requirejs комбинированное приложение window.onerror обработка ошибок

В приложениях на основе Backbone и requirejs 2x, только когда приложение объединено через grunt-contrib-require, window.onerror останавливает перехват ошибок.

Идентификатор функции window.onerror, объявленный до и за пределами приложения Backbone, отправляет ошибки бэкэнду.

Извините, не могу опубликовать большую часть приложения, но те заинтересованные части

это мой файл app / main.js

require(["config"], function () {

    // config is a require.config({}); definition

    require(["app", "router"], function (app, Router) {
        app.initialize(new Router());
    });

});

Раздел Gruntfile.js, касающийся задачи requirejs

    requirejs : {
        debug : {
            options : {
                mainConfigFile : "app/config.js",
                generateSourceMaps : false,
                include : [ "main" ],
                insertRequire : [ "main" ],
                out : "app.combined.js",
                optimize : "none",
                findNestedDependencies : true,
                name : "config",
                baseUrl : "app",
                wrap : false,
                preserveLicenseComments : false
            }
        }
    }

Вставка некомбинированного приложения:

<script>
  window.onerror = function(msg, url, line, colno, error) {
     console.debug('onerror',arguments);
     // data will be sent to backend

     // TRACE FIRED

  }
</script>

<script src="require.js" data-main="app/main"></script>

Встроить комбинированное приложение:

<script>
  window.onerror = function(msg, url, line, colno, error) {
     console.debug('onerror',arguments);
     // data will be sent to backend

     // TRACE NOT FIRED
  }
</script>
<script src="app.combined.js" ></script>

Любое предложение приветствуется! благодарю вас.

1 ответ

Я нашел решение для этого.

Я должен объявить window.onerror после загрузки окна.

    $(window).load(function() {

      window.onerror = function(msg, url, line, colno, error) {

        console.debug('onerror',arguments);

        // data will be sent to backend

        // TRACE FIRED
     };
    });

    <script src="app.combined.js" ></script>
Другие вопросы по тегам