有一天,我的应用程序突然决定不死。
当我检查端口时按 ctrl + c 后,它仍然在那里,不仅在我的机器上,而且在 PM2 管理的服务器上,所以我每次都需要去那里手动终止进程。我试图在我的代码中查找问题,当我找不到时,我只是认为这只是依赖项错误之一,很快就会有修复。这有点烦人,但我可以使用kill -9 PID 来终止该进程,而且我的大部分任务都在前端完成,所以这并不是什么大问题。今天,一个多星期过去了,问题仍然存在。 我回顾了历史,选择了几周前所做的提交,一切都运行良好,将 NodeJS 从 5.1.0 切换到 4.2.1,清除了 npm 缓存,重新安装了所有依赖项,但我仍然看到问题。 我使用的是 LoopbackJS,但通常我只是用“node server/server.js”启动应用程序,然后就会发生上述问题,但如果我使用“slc run”,然后尝试用 ctrl + c 终止应用程序,它就会永远挂起,我的意思是我可以按 ctrl+c 任意多次,它仍然在控制台前台运行。
如果我不按 ctrl+c 来终止控制台中的选项卡,应用程序就会毫无问题地终止。
这是我在运行“lsof -i tcp:4000”后看到的结果,当时应用程序应该已经死了,但实际上并没有
编辑: 使用 Strongloop 进程管理器运行和终止它 - slc start/slc stop 工作正常,但在开发过程中使用运行 NodeJS 应用程序 (node server.js) 的正常方式会更方便,并且它不会改变存在一些问题的事实,最好不要将其隐藏在地毯下。
最佳答案
出于愤怒,我将我的应用程序剥离为最基本的元素。我逐个文件、一点一点地找到了答案。 罪魁祸首是 phantomJS - https://github.com/sgentle/phantomjs-node 。 PATCH 版本 0.8.2 引入了此错误。修复程序大约在一个月前创建,一周前合并,但尚未在 npm 上发布。
关于node.js - 无法杀死 NodeJS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879801/