我通过订阅window.onerror事件来捕获JS错误,所以如果有人抓住了未定义的变量'错误,我将其发送到服务器进行调试。 如您所知,此活动会返回错误消息',' url'和' line'发生错误的地方。
问题出在压缩文件中。
如果压缩文件,所有代码都在一行中,确定错误的确切位置是个大问题。
这个问题有解决办法吗?
答案 0 :(得分:0)
没有。出于错误记录的目的,无法“断开”JavaScript包含。
您最好的选择可能是记录Error Type,希望这可以帮助您调试问题。
如果您真的想要获取特定的行号,则必须删除最小化并依赖浏览器缓存来获得性能。
答案 1 :(得分:0)
JavaScript压缩器通常做两件事:
还有其他一些优化,例如函数内联,但这些优化通常不会那么成问题。
至于第一点,您可以通过众多JavaScript source formatters之一运行代码。这应该会给你一个非常易读的JavaScript文件。
至于第二点,混淆通常是不可逆的。如果“说出”变量名称(例如width
,height
或其他任何内容已更改为a
或b
,则您无法知道它们首先要表达的内容。
如果此问题适用于开源产品,您通常可以下载源代码并尝试使用它们重建问题。
如果它是封闭源代码,只是“美化”代码没有帮助,你必须向供应商写一个错误报告。
答案 2 :(得分:0)
我认为你可以使用源地图...... 它是一个可以在缩小时生成的文件,可用于将缩小文件的行/字符映射到原始源。
http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
答案 3 :(得分:0)
我发现here
这个问题的最佳答案 Malyw建议您使用带有 max-line-len 选项和源图的Uglify。
这可能是识别代码中确切位置的最佳解决方案