无法杀死NodeJS应用程序

总有一天,我的应用程序决定不会死的。

当我检查端口后按ctrl + c它仍然存在,不仅在我的机器上,而且在由PM2pipe理的服务器上,所以我需要每次都去那里,手工杀死进程。 我试图寻找在我的代码中的问题,当我不能只是虽然这只是依赖性错误之一,很快就会有一个修复。 这有点烦人,但我可以用kill -9 PID杀死进程,而且我在前端执行了大部分任务,所以这不是什么大问题。 今天,一个多星期后问题还在这里。 我回到了历史中,select了几个星期前的一个提交,在那里一切正常,NodeJS从5.1.0切换到4.2.1,清除了npmcaching,重新安装了所有的依赖关系,我仍然看到了问题。 我正在使用LoopbackJS,但通常我简单地使用“node server / server.js”启动应用程序,然后上述问题发生,但如果我使用“slc运行”,然后尝试用ctrl + c杀死应用程序只是永远挂起,我的意思是我可以多次按ctrl + c,而且它仍然在控制台前台运行。

如果不是按ctrl + c我杀死控制台中的选项卡,应用程序死亡没有问题。

这是我运行“lsof -i tcp:4000”后看到的应用程序应该死了,但不是

lsof -i tcp:4000

编辑:使用Strongloop进程pipe理器运行并杀死它 – slc start / slc stop可以正常工作,但是在开发过程中使用运行NodeJS应用程序(节点server.js)的正常方式会更方便,并且不会改变这个事实是一个问题,最好不要把它藏在地毯下面。

出于愤怒,我将应用程序剥离出最基本的元素。 逐个文件地,我find了答案。 罪魁祸首是phantomJS – https://github.com/sgentle/phantomjs-node 。 PATCH版本0.8.2引入了这个bug。 Fix是在一个月前创build的,一个星期前合并,但是还没有在npm上发布。