Node.JS:工具,看看为什么进程仍在运行?

Bry*_*eld 15 stack-trace node.js

有没有办法看到什么超时,间隔或异步操作(或无限循环)仍在运行,并阻止我的进程结束?

到目前为止,我已经能够在没有这样的工具的情况下解决这个问题,但是这样的工具非常方便,尤其是当Node.JS项目开始变大时.

我在想Java kill -3,它将堆栈跟踪打印到stderr.您可以为任何进程,任何时间,调试或否执行此操作.我想要Node.JS的等价物.(我知道该节点是单线程的异步,因此输出方式不同)

B T*_*B T 10

节点运行的模块正是您需要的.

 var log = require('why-is-node-running')
 setTimeout(function () {
   log() // logs out active handles that are keeping node running
 }, 100)
Run Code Online (Sandbox Code Playgroud)

输出类似于:

There are 4 known handle(s) keeping the process running and 0 unknown
Known handles:
# Timer
/Users/maf/dev/node_modules/why-is-node-running/example.js:6  - setInterval(function () {}, 1000)
/Users/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer()

# TCP
/Users/maf/dev/node_modules/why-is-node-running/example.js:7  - server.listen(0)
/Users/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer()

# TCP
/Users/maf/dev/node_modules/why-is-node-running/example.js:7  - server.listen(0)
/Users/maf/dev/node_modules/why-is-node-running/example.js:11 - createServer()

# Timer
/Users/maf/dev/node_modules/why-is-node-running/example.js:13 - setTimeout(function () {
Run Code Online (Sandbox Code Playgroud)