从压缩文件中捕获JavaScript错误

时间:2014-09-15 16:20:43

标签: javascript error-handling compression minimization

我通过订阅window.onerror事件来捕获JS错误,所以如果有人抓住了未定义的变量'错误,我将其发送到服务器进行调试。 如您所知,此活动会返回错误消息',' url'和' line'发生错误的地方。

问题出在压缩文件中。

如果压缩文件,所有代码都在一行中,确定错误的确切位置是个大问题。

这个问题有解决办法吗?

4 个答案:

答案 0 :(得分:0)

没有。出于错误记录的目的,无法“断开”JavaScript包含。

您最好的选择可能是记录Error Type,希望这可以帮助您调试问题。

如果您真的想要获取特定的行号,则必须删除最小化并依赖浏览器缓存来获得性能。

答案 1 :(得分:0)

JavaScript压缩器通常做两件事:

  1. 删除所有不必要的空格(在语法验证方面“不必要”)。
  2. 如果可能,
  3. 缩短变量名称。这适用于局部变量,即那些不在全局范围内的变量或对象的成员。
  4. 还有其他一些优化,例如函数内联,但这些优化通常不会那么成问题。

    至于第一点,您可以通过众多JavaScript source formatters之一运行代码。这应该会给你一个非常易读的JavaScript文件。

    至于第二点,混淆通常是不可逆的。如果“说出”变量名称(例如widthheight或其他任何内容已更改为ab,则您无法知道它们首先要表达的内容。

    如果此问题适用于开源产品,您通常可以下载源代码并尝试使用它们重建问题。

    如果它是封闭源代码,只是“美化”代码没有帮助,你必须向供应商写一个错误报告。

答案 2 :(得分:0)

我认为你可以使用源地图...... 它是一个可以在缩小时生成的文件,可用于将缩小文件的行/字符映射到原始源。

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

答案 3 :(得分:0)

我发现here

这个问题的最佳答案

Malyw建议您使用带有 max-line-len 选项和源图的Uglify。
这可能是识别代码中确切位置的最佳解决方案