2013-05-08 83 views
2

我有一个window.onerror处理程序发送JavaScript错误到我们的服务器。我希望通过使用源映射将缩小的源代码中的错误链接回原始代码来分析这些内容,但似乎Chrome和Firefox只提供错误的行号。据我所见,源图没有列号是没有用的。如何在JavaScript中调试客户端错误?

因此,给定一个缩小的行数和x is undefined形式的错误消息,我可以采取哪些步骤进行调试?

(如果它有什么不同,我在Rails 3.2中使用资产管道)。

+12

调试时使用缩小的代码并使用完整的原始代码。 – 2013-05-08 15:46:32

+0

用jsbeautifier.org展开您的缩小代码,然后检查错误的行号,如果您无法查看原始来源。 – 2013-05-08 15:49:18

+0

此外,如果你只有一些原因缩小的代码,你可以通过JSBeautifier坚持它,使其可读性: http://jsbeautifier.org/ – MasNotsram 2013-05-08 15:49:57

回答

0

如果你想使用源地图,你需要下载Chrome Canary(即预发布版本的Chrome)。

这是一个实验性功能,目前尚未发布在主要的Chrome版本中。 (即使在加那利,它也必须在浏览器选项中明确打开)。

+0

源地图在本地工作得很好 - 当我尝试调试用户发生的错误时,出现了我的问题。 'window.onerror'处理程序仅用三个参数调用,其中没有一个是列。 https://developer.mozilla.org/en-US/docs/DOM/window.onerror – 2013-05-08 16:27:43

0

我建议使用Firebug与Firefox,这里有一个教程,让你开始:

http://thecodecentral.com/2007/08/01/debug-javascript-with-firebug

我这个用了几次调试非常糟糕的JS,但我通常只是这样做:

Firefox下拉菜单> Web开发人员> Web控制台。这会告诉你#行和错误被抛出(最重要),我发现它通常是足够的,而不需要经过调试工作。

1

Chrome(和IE10)现在会为您提供列号,作为window.onerror回调中的第四个参数。 Here's the Firefox bug for adding column numbers,但它看起来不太有希望。

+0

有趣的是,感谢评论。我最终最终保留了行号,这似乎是一个合理的妥协。 – 2013-10-07 11:17:58