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>