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

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

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

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


当前回答

使用--inspect标志启动节点进程。

node--检查index.js

然后打开chrome://inspect镀铬。单击“Open dedicated DevTools for Node”链接或安装此chrome扩展以轻松打开chrome DevTools。

有关详细信息,请参阅此链接

其他回答

调试Node.JS应用程序的方法如下:

1) 安装devtool并用它启动应用程序

npm install devtool -g --save
devtool server.js

这将在chrome开发人员模式下打开,因此您可以放置调试器点并进行测试。

2) 使用节点检查器进行调试

node-inspector

3) 使用--debug调试

node --debug app.js 

我最初的反应是几年前的预视工作室。

因此,hapi使用GOOD是一个很棒的日志记录包,但要进行调试,请使用visual studio。

最初的回应(很久以前):我会使用沃尔玛实验室的GOOD。它可以完成任务,而且非常灵活:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});

调试

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

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