如何知道是啥阻止了 NodeJS 关闭

Posted

技术标签:

【中文标题】如何知道是啥阻止了 NodeJS 关闭【英文标题】:How to know what blocks NodeJS from closing如何知道是什么阻止了 NodeJS 关闭 【发布时间】:2018-08-09 02:21:15 【问题描述】:

我有在 NodeJS 上运行的代码,其中涉及间隔、套接字和其他异步事物。

有时当它应该关闭时,它会永远挂起,大概是因为在某些情况下,我忘记了清除间隔、关闭套接字或其他什么。

有没有办法获取当前活动的计时器以及其他此类运行时信息?或者以任何方式检查是什么阻碍了出口?

【问题讨论】:

是的,一个调试器。 我尝试在全局进程对象下搜索信息,但在那里找不到任何信息。有什么提示吗? :) 当您希望程序退出时,您是否有理由不使用process.exit() process.exit() 对我来说似乎很 hacky,没有其他原因。 它一点也不 hacky。这是任何操作系统中几乎所有程序的核心概念。该程序在完成并想要退出时告诉操作系统。所有 node.js 都在使用它的所有计时器和套接字计数器只是试图决定何时调用相同的函数以导致程序退出。如果你很清楚你什么时候完成了所有事情并且你希望你的程序退出,只需调用process.exit() 【参考方案1】:

从与此相关的问题 (https://***.com/a/38471228/2503048) 中找到此包 https://www.npmjs.com/package/wtfnode。奇怪的是,我在谷歌搜索时找不到这些信息。它可能应该回答我的问题。主要是关于process._getActiveHandles()的部分。

【讨论】:

以上是关于如何知道是啥阻止了 NodeJS 关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止在 Mongoose 数组中创建重复项 | NodeJS 猫鼬

是啥阻止了我的 ByteBuffer 释放?

想要阻止MongoDB或JavaScript脚本执行

如何阻止 codeception/selenium 在断言失败时关闭浏览器窗口?

如何在超出超时时阻止NodeJS脚本崩溃

使用Xcode / Swift或独角兽精灵灰尘在iPad上覆盖(阻止)或关闭iOS