debugging节点,什么使它保持运行?

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

我可能只是通过我所做的更改,并试图追踪它,但是…有一个简单的方法来debugging节点,找出什么代码/事件/callback/连接或什么的,这是等待?

我已经看了一下node-inspector,但是我不知道如何查找任何可以打开的东西。 有什么build议?

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

当我遇到这种情况时,最常见的就是mongodb,amqp等。这就是数据库连接,networking连接。 确保你完成处理后closures这些。

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

在你期望它closures添加点

 console.log(process._getActiveHandles()); 

你也可以添加一个处理程序

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

所以如果节点没有正确closures,Ctrl + C会告诉你为什么。