0

Backbone と requirejs 2x ベースのアプリケーションでは、アプリケーションがgrunt-contrib-require を介して結合されている場合にのみ、window.onerror がエラーのトラップを停止します。

バックボーン アプリケーションの前と外側で宣言された window.onerror 関数 ID は、エラーをバックエンドに送信します。

申し訳ありませんが、アプリケーションの多くを投稿することはできませんが、興味のある部分

これは私の app/main.js ファイルです

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

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

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

});

requirejs タスクに関する Gruntfile.js セクション

    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>

どんな提案でも大歓迎です! ありがとうございました。

4

1 に答える 1

0

これに対する解決策を見つけました。

window load の後に 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>
于 2014-11-21T15:15:25.047 に答える