2
我试图让Greasemonkey的Userscript工作,但它一直抛出 “错过;在语句”前 在Javascript错误控制台。Greasemonkey调试,获取实际行号
Greasemonkey文档说应该忽略行号,但由于脚本非常冗长,所以知道错误发生的位置会非常有帮助。我如何知道?
编辑:所以,长话短说。在最近的Greasemonkey版本中,行号是正确的。
我试图让Greasemonkey的Userscript工作,但它一直抛出 “错过;在语句”前 在Javascript错误控制台。Greasemonkey调试,获取实际行号
Greasemonkey文档说应该忽略行号,但由于脚本非常冗长,所以知道错误发生的位置会非常有帮助。我如何知道?
编辑:所以,长话短说。在最近的Greasemonkey版本中,行号是正确的。
Greasemonkey的最新版本似乎充分报告了行号,但在Greasemonkey脚本中使用它之前,最好在Firebug控制台中尽可能多地调试和测试脚本。
而且,如missno所说,jsHint可以很好地捕捉这些类型的问题。
无论如何,假设我有一个这样的脚本:
// ==UserScript==
// @name _Debugging test
// @include http://YOUR_SERVER/YOUR_PATH/*
// ==/UserScript==
unsafeWindow.console.log ('Line 1', 1 + 0);
unsafeWindow.console.log ('Line 2', 1 + 1);
unsafeWindow.console.log ('Line 3', 1 + 2);
unsafeWindow.console.log ('Line 4 **Throw error here**', 1 + 3 + nonExistantVariable);
unsafeWindow.console.log ('Line 5', 1 + 4);
当我在我的系统(操作系统,FF的2运行:10.0.2,GM:0.9.18,萤火虫:1.9 .1和除GM相同:0.9.17),我得到Firebug的控制台上:
Line 1 1 Line 2 2 Line 3 3
这个Firefox的错误控制台(按Ctrl 移Ĵ):
点击链接,得出:
缺席真正的调试功能,它没有得到比这更好。
对于语法错误,我真的很喜欢使用[jsHint](http://jshint.org)。它也做了一些简单的静态分析,这也有助于捕捉许多错误和样式不一致。 – hugomg 2012-03-08 13:37:32