如何调试Node.js服务器应用程序?

现在,我主要使用如下打印语句的警报调试:

sys.puts(sys.inspect(someVariable));

必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也适用于Node.js吗?


当前回答

使用此命令

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect

其他回答

我个人使用JetBrains WebStorm,因为它是我发现的唯一一个适用于前端和后端JavaScript的JavaScript IDE。

它可以在多个操作系统上运行,内置Node.js调试(以及大量其他功能)(http://www.jetbrains.com/webstorm/features/index.html).

我唯一的“问题”/愿望列表项目是:

在Mac上,它似乎比Windows更需要资源。在版本6中,它似乎不再是一个问题。如果它有Snippet支持(就像Sublime Text 2一样),那就太好了。比如,键入“fun”并点击“tab”以放入一个函数。请参阅下面的@WickyNilliams评论-使用Live模板,您也可以支持Snippet。

作为Google Chrome开发者工具的一部分发布的V8调试器可用于调试Node.js脚本。可以在Node.js GitHub wiki中找到这一工作原理的详细说明。

仅为完整起见:

PyCharm 3.0+Node.js插件提供了很棒的开发+运行+调试体验。

用您最喜欢的浏览器调试器调试小型Node.js脚本的一种快速而肮脏的方法是使用browserify。注意,这种方法不适用于任何需要本机I/O库的应用程序,但对于大多数小型脚本来说,它已经足够好了。

$ npm install -g browserify

现在将所有var x=requires('x')调用移动到requires.js文件中并运行:

$ browserify requires.js -s window -o bundle.js

(这里的缺点是,您必须移动或注释所有文件中的要求。)

在HTML文件中包含bundle.js,如下所示:

<script type="text/javascript" src="bundle.js"></script>

现在在浏览器中加载文件,然后在浏览器中按F12和viola:debug。

其他答案中没有提到的另一个选项是使用名为Rookout的工具。它用于从本地和远程应用程序调试和获取数据。我们在生产环境中使用它将数据聚合到其他服务中,这为我们省去了很多麻烦和硬编码日志记录