如果主事件循环中还有回调函数未完成,Node.js脚本将无法退出。虽然可以通过调用process.exit()
或抛出异常来强制终止脚本,但建议始终进行适当的清理,让脚本自然终止。然而,由于代码中的错误可能会阻止适当的清理(例如,忘记在不再需要时删除IntervalObject),因此有时会很难执行这种操作,从而导致程序无法终止。
因此,是否有一种方法可以调试非终止脚本以查找事件循环中尚未完成的内容?换句话说,在Node.js中是否有一种方法可以调试阻止程序退出的原因?
如果主事件循环中还有回调函数未完成,Node.js脚本将无法退出。虽然可以通过调用process.exit()
或抛出异常来强制终止脚本,但建议始终进行适当的清理,让脚本自然终止。然而,由于代码中的错误可能会阻止适当的清理(例如,忘记在不再需要时删除IntervalObject),因此有时会很难执行这种操作,从而导致程序无法终止。
因此,是否有一种方法可以调试非终止脚本以查找事件循环中尚未完成的内容?换句话说,在Node.js中是否有一种方法可以调试阻止程序退出的原因?
process._getActiveRequests()
获取活动 I/O 请求列表, 并使用 process._getActiveHandles()
获取打开的句柄/文件描述符列表。wtfnode
包利用了@mscdex提到的工具,但以更加开发者友好的方式呈现。我强烈推荐它来跟踪这些恼人的问题。
const wtf = require('wtfnode');
// ...
wtf.dump();