有没有办法看到什么超时,间隔或异步操作(或无限循环)仍在运行,并阻止我的过程结束?Node.JS:查看为什么进程仍在运行的工具?
到目前为止,我已经能够找到它,但没有这样的工具,但是这样的工具会非常方便,尤其是当Node.JS项目开始变得更大时。
我想到了Java的kill -3
,它将堆栈跟踪打印到stderr。您可以对任何进程,任何时间,调试或不进行此操作。我想要一个Node.JS的等价物。 (我知道这点是单线程与异步所以它会输出不同)
有没有办法看到什么超时,间隔或异步操作(或无限循环)仍在运行,并阻止我的过程结束?Node.JS:查看为什么进程仍在运行的工具?
到目前为止,我已经能够找到它,但没有这样的工具,但是这样的工具会非常方便,尤其是当Node.JS项目开始变得更大时。
我想到了Java的kill -3
,它将堆栈跟踪打印到stderr。您可以对任何进程,任何时间,调试或不进行此操作。我想要一个Node.JS的等价物。 (我知道这点是单线程与异步所以它会输出不同)
模块why-is-node-running正是你需要的东西。
var log = require('why-is-node-running')
setTimeout(function() {
log() // logs out active handles that are keeping node running
}, 100)
和输出是一样的东西:
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() {
太棒了!我迫不及待想测试这个! – 2016-05-16 13:25:36
就是这样!谢谢! – 2017-12-13 17:54:49
我有一个类似的问题,你用某种数据库的运行测试时运行到这个问题?例如,我的单元测试当我使用mongodb时,将不会因为内部mongo超时/间隔而退出。 – kcbanner 2011-05-06 19:44:31
@kcbanner:在MySQL中,您必须先结束连接,然后进程才会自动退出。在MongoDB中可能是一样的吗?或者你已经尝试过吗? – 2011-05-06 20:48:51
是的,结束连接修复它。 – kcbanner 2011-05-07 18:00:56