调试节点,什么使它保持运行?
我有一个为Node.Js编写的脚本,用于收集数据负载,处理它,保存并完成。 不幸的是,我所做的是阻止脚本完成和节点关闭,而是保持打开状态。
我可能只是通过我所做的更改并尝试追踪它,但是...有没有一种简单的方法来调试节点,并找出什么代码/事件/回调/连接或什么,它是等待?
我查看了一下node-inspector,但我无法弄清楚如何查找任何可以打开的东西。 有什么建议?
你可以使用wtfnode运行你的node.js程序,或者添加require('wtfnode').init();
在第一行或您的程序中。 然后它会打印所有保持节点打开状态的列表,当你按ctrl + c来终止进程。
当我发生这种情况时,它通常是类似于mongodb,amqp等的东西。这就是数据库连接,网络连接。 确保您在完成处理后关闭这些设备。
我想你可以使用lsof -p <PID>
并看看有什么说的。 我可以在那里看到mongodb和amqp。
在你期望它关闭添加点
console.log(process._getActiveHandles());
你也可以添加一个处理程序
process.on('SIGINT', () => console.log(process._getActiveHandles()) );
所以如果节点没有正确关闭,Ctrl + C会告诉你为什么。
链接地址: http://www.djcxy.com/p/52689.html上一篇: Debug Node, what is keeping it running?
下一篇: Node.js: How to attach to a running process and to debug the server with a console?