7

我有一个为 Node.Js 编写的脚本,它收集大量数据、处理它、保存然后完成。不幸的是,我所做的事情是阻止脚本完成和节点关闭,而是保持打开状态。

我可能只是通过我所做的更改并尝试追踪它,但是......是否有一种简单的方法来调试节点并找出它的代码/事件/回调/连接或其他什么等待?

我看过 node-inspector 但我不知道如何追踪任何保持它打开的东西。有什么建议吗?

4

3 回答 3

8

您可以使用wtfnode运行您的 node.js 程序,或者require('wtfnode').init();在第一行或您的程序中添加。ctrl然后,当您按+c终止进程时,它将打印保持节点打开的所有事物的列表。

于 2016-07-24T12:21:19.553 回答
4

当我发生这种情况时,通常是 mongodb、amqp 等。即数据库连接、网络连接。确保在完成处理后关闭它们。

我想你可以使用lsof -p <PID>看看它说了什么。我可以在那里看到 mongodb 和 amqp。

于 2013-02-11T15:05:40.967 回答
1

在您希望它关闭的地方添加

console.log(process._getActiveHandles());

您还可以添加处理程序

process.on('SIGINT', () => console.log(process._getActiveHandles()) );

所以如果节点没有正确关闭,Ctrl + C 会告诉你原因。

于 2017-11-18T14:25:27.180 回答