在基于Backbone和requirejs 2x的应用程序中,仅当应用程序通过grunt-contrib-require组合时,才使用,window.onerror停止捕获错误。
在Backbone应用程序之前和之外声明的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>
任何建议欢迎!谢谢。
最佳答案
我找到了解决方案。
我应该在窗口加载之后声明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>
关于javascript - Requirejs组合应用程序window.onerror错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060930/