javascript window.onerror消息仅包含“脚本错误”。我怎么能得到行号?

时间:2012-11-18 14:54:45

标签: javascript error-handling

你可能通过window.onerror来保护你的js脚本以捕获全局异常, 问题是,我的生产文件是压缩的,行号总是1,所以我真的不知道错误发生在哪里?你有什么建议在这种情况下我该怎么办?

window.onerror = function (errorMsg, fileName, lineNumber) { logger.sendError(errorMsg + " file name " + fileName, "window.onerror") };

2 个答案:

答案 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来更改此内容。