如果主事件循环中还有回调,Node.js脚本将不会退出。虽然可以通过调用process.exit()或抛出异常来强制终止脚本,但建议通过始终执行适当的清理,让脚本“自然”终止。然而,有时这可能是困难的,因为代码中的bug可能会阻止适当的清理,例如,我可能会在不再需要时忘记删除IntervalObject,等等,这最终会阻止程序终止。
因此,有没有一种方法可以调试一个非终止脚本,以找出事件循环中剩余的注册内容?换句话说,在Node.js中有没有一种方法可以调试阻止程序退出的原因?
发布于 2014-09-26 20:43:11
可以调用process._getActiveRequests()来获取活动I/O请求的列表,调用process._getActiveHandles()来获取打开的句柄/文件描述符的列表。
发布于 2019-01-29 02:59:13
wtfnode包利用了@mscdex提到的工具,但以一种对开发人员更友好的方式呈现。我强烈推荐这个来追踪这些烦人的事情。
const wtf = require('wtfnode');
// ...
wtf.dump();发布于 2018-10-16 18:01:53
从版本8开始,Node.js提供了一个方便的模块来检索这类信息。
async_hooks:用于注册跟踪在Node.js应用程序中创建的异步资源的生命周期的回调的API。
https://stackoverflow.com/questions/26057328
复制相似问题