2012-03-08 21 views
2

我试图让Greasemonkey的Userscript工作,但它一直抛出 “错过;在语句”前 在Javascript错误控制台。Greasemonkey调试,获取实际行号

Greasemonkey文档说应该忽略行号,但由于脚本非常冗长,所以知道错误发生的位置会非常有帮助。我如何知道?

编辑:所以,长话短说。在最近的Greasemonkey版本中,行号是正确的。

+1

对于语法错误,我真的很喜欢使用[jsHint](http://jshint.org)。它也做了一些简单的静态分析,这也有助于捕捉许多错误和样式不一致。 – hugomg 2012-03-08 13:37:32

回答

1

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 Ĵ):

Line numbers reported


点击链接,得出:

Source view

缺席真正的调试功能,它没有得到比这更好。