它在Node.js 关于页面上说:
当没有更多回调要执行时,节点退出事件循环。
有没有办法找出哪些回调阻止 Node 退出?
您可以使用process._getActiveHandles()
和process._getActiveRequests()
请参阅node.js 邮件列表中的此讨论。
更新:有一个很好的包 - https://github.com/mafintosh/why-is-node-running
有一个 npm 模块wtfnode显示当您向它发送 SIGINT (ctrl-c) 时保持 nodejs 应用程序运行的原因。
process._getActiveHandles()
如@andrey-sidrov 的回答中所述,它的内部用途。使用的好处wtfnode
是它提供了易于阅读的输出。
如果您有兴趣了解哪些打开的连接仍处于打开状态:
当进程挂起时,您可以在 mac 和 linux 中运行:netstat -a
搜索开放端口。这是一个很好的线索,在谈到为什么 Jest 被绞死时,它会不时帮助我。