0

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

问题出在压缩文件中。

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

这个问题有什么解决办法吗?

4

4 回答 4

0

不可以。为了错误记录的目的,没有办法“缩小” JavaScript 包含。

您最好的选择可能是记录错误类型,希望这能帮助您调试问题。

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

于 2014-09-15T16:27:57.343 回答
0

JavaScript 压缩器通常做两件事:

  1. 删除所有不必要的空格(在语法有效性方面是“不必要的”)。
  2. 如果可能的话,缩短变量名。这适用于局部变量,即那些不在全局范围或对象成员中的变量。

还有一些其他的优化,例如函数内联,但这些通常不是那么成问题。

至于第一点,您可以通过众多JavaScript 源格式化程序之一运行代码。这应该会给你一个可读性很强的 JavaScript 文件。

至于第二点,混淆通常是不可逆的。如果“说话”的变量名称如width,height或任何已更改为aor的名称b,您一开始就无法知道它们的含义。

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

如果它是封闭源代码,并且仅“美化”代码无济于事,则您必须向供应商编写错误报告。

于 2014-09-15T16:29:42.980 回答
0

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

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

于 2014-09-15T16:33:11.253 回答
0

我在这里找到的关于这个问题的最佳答案

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

于 2015-03-01T11:38:33.620 回答