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

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

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

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


当前回答

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

其他回答

Theseus是Adobe research的一个项目,它允许您在开源编辑器Brackets中调试Node.js代码。它有一些有趣的特性,如实时代码覆盖、追溯检查、异步调用树。

调试

Joyent指南调试器节点检查器Visual Studio代码云9括号

分析

节点--教授/应用程序.jsnode—prof进程/生成的日志文件

堆转储

使用Chrome开发者工具的节点堆转储

火焰图

0倍jam3/devtool然后是Chrome开发者工具火焰图Dtrace和StackVis-仅在SmartOS上受支持临床医师

跟踪

使用TraceGL的交互式堆栈跟踪

登录中

输出调试信息的库

毛虫示踪剂潦草

增强堆栈跟踪信息的库

朗约翰

标杆管理

Apache工作台:ab-n 100000-c 1http://127.0.0.1:9778/wrk公司

另外

查出优势家伙Google跟踪框架保罗·爱尔兰指南

遗产

这些功能可以使用,但不再维护或不再适用于现代节点版本。

https://github.com/bnoordhuis/node-profiler-替换为内置调试https://github.com/c4milo/node-webkit-agent-由节点检查器替换https://nodetime.com/-失效

使用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文件。

假设您的计算机上安装了节点检查器(如果没有,只需键入“npm install-g node inspector”),您只需运行:

node-inspector & node --debug-brk scriptFileName.js

然后从命令行将URI粘贴到WebKit(Chrome/Safari)浏览器中。

节点检查器可以节省一天!从任何支持WebSocket的浏览器使用它。断点、分析器、实时编码等……真是太棒了。

安装时使用:

npm install -g node-inspector

然后运行:

node-debug app.js