如何找出什么是防止我的节点JS应用程序自然closures?

我开发了一个node.js应用程序。 然而,在某个阶段,应用程序应该自然closures。 我可以看到它通过console.log()消息到达最终指令。

但是,Netbeans告诉我它仍在运行。 尽pipe我终止了与数据库的连接,但仍有一些东西使应用程序保持活着。 我正在用尽想法。

我怎样才能找出什么阻止我的应用程序closures?

UPDATE

以下是我使用的模块列表:

  "dependencies": { "async": "0.9", "body-parser": "1.4.3", "clean-css": "2.1.8", "cookie": "0.1.2", "cookie-parser": "1.1.0", "crypto-js": "3.1.2-3", "csurf": "1.2.0", "emailjs": "0.3.6", "express-session": "1.2.1", "express": "4.3.1", "html-minifier": "0.6.1", "markup-js": "1.5.18", "node-fs": "0.1.7", "node-fs-extra": "0.8.1", "pem": "1.4.1", "pg": "3.2.0", "readdirp": "1.0.1", "st": "0.4.1", "utils-merge": "1.0.0", "validator": "3.12.0", "yuicompressor": "2.4.8" } 

有几个无证的函数可以帮助你判断: process._getActiveRequests()process._getActiveHandles() 。 它们都分别返回一系列活动请求(例如networking请求)和活动句柄(/文件描述符)。

在节点v0.11 +中有一个名为AsyncListener的新(logging)的API,它也可以帮助你跟踪asynchronous请求。

我发现的最常见的问题是你有超时没有执行。 由于清除这些并不总是实用的,您可能需要强制退出程序:

 process.exit(0)