1

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

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

2 回答 2

0

正如 Ianzz 在他的评论中所说,一般来说,您的浏览器不可能为缩小代码确定有意义的行号。毕竟:如果所有代码都在一行上,那么正确(但非常无用)的行号总是1.

然而,有一种运动允许使用源映射,它们是单独的文件,它们准确地指定(缩小的)JavaScript 如何映射回更有意义的输入。

http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

该规范相对较新,还没有传播太远。但是根据您的缩小框架,可能已经有一个工具可用于生成源映射。

于 2012-11-18T17:29:39.623 回答
0

如果它显示“脚本错误”,则由于违反 CSP(内容安全策略),浏览器已阻止您的错误处理代码访问堆栈。

如果您的代码来自不同的域,或者如果它使用 eval 或 JSONP,通常会发生这种情况。

大多数打包工具(例如 browserify/webpack)默认使用 eval 或 JSONP。对于 webpack,您可以设置config.devtool更改此设置。

于 2017-10-27T09:11:46.053 回答