如何调试Node.js服务器应用程序?
现在,我主要使用如下打印语句的警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也适用于Node.js吗?
如何调试Node.js服务器应用程序?
现在,我主要使用如下打印语句的警报调试:
sys.puts(sys.inspect(someVariable));
必须有更好的调试方法。我知道Google Chrome有一个命令行调试器。这个调试器也适用于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。
其他回答
Node.js中有内置的命令行调试器客户端。Cloud9IDE也有非常好的(可视化)调试器。
Node.js 0.3.4+版本具有内置调试支持。
节点调试脚本.js
手册:http://nodejs.org/api/debugger.html
使用IDE
在WebStorm中,您只需打开package.json文件,然后从那里以DEBUG模式运行脚本。只需单击侧面的绿色播放按钮。
带有--检查
如果要在没有IDE的情况下直接从CLI调试应用程序,那么可以运行类似node index.js--inspect的脚本。默认情况下,它将侦听端口5858,允许您连接调试器。或者,您可以使用--inspect=55858指定不同的端口。
带有环境变量
创建一个脚本myInspector.js,如下所示:
let inspector = require("inspector");
// you could explicitly specify a port.
// or alternatively set it to 0 to get any available port.
const port = 0;
inspector.open(port, undefined, true);
// print the url which also reveals the port.
const url = inspector.url()
console.log(url);
设置环境变量NODE_OPTIONS=“--requiremyInspector.js”启动脚本。
事实上,这也是WebStorm注入检查器的方式。美妙之处在于,无论您使用哪种发射器,它都能正常工作。所以你可以跑。。。,节点ts。。。或者甚至使用一些.sh/.bat文件。
Visual Studio代码具有非常好的Node.js调试支持。它是免费的、开源的、跨平台的,在Linux、OS X和Windows上运行。
如果需要,您甚至可以调试咕噜咕噜的任务。。。
Theseus是Adobe research的一个项目,它允许您在开源编辑器Brackets中调试Node.js代码。它有一些有趣的特性,如实时代码覆盖、追溯检查、异步调用树。