你可能通过window.onerror来保护你的js脚本以捕获全局异常, 问题是,我的生产文件是压缩的,行号总是1,所以我真的不知道错误发生在哪里?你有什么建议在这种情况下我该怎么办?
window.onerror = function (errorMsg, fileName, lineNumber) { logger.sendError(errorMsg + " file name " + fileName, "window.onerror") };
答案 0 :(得分:0)
正如Ianzz在评论中所说,一般情况下,浏览器无法为缩小代码确定有意义的行号。毕竟:如果所有代码都在一行上,那么正确(但相当无用)的行号总是1
。
然而,有一个运动允许使用源映射,源映射是单独的文件,准确指定(缩小的)JavaScript如何映射回更有意义的输入。
http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
规范相对较新,而且传播范围不大。但是根据你的缩小框架,可能还有一个工具可用于生成源地图。
答案 1 :(得分:0)
如果它说"脚本错误"然后,由于CSP(内容安全策略)违规,浏览器阻止您的错误处理代码访问堆栈。
通常,如果您的代码来自不同的域,或者它使用的是eval或JSONP,就会发生这种情况。
大多数捆绑包(例如browserify / webpack)默认使用eval或JSONP。对于webpack,您可以设置config.devtool
来更改此内容。