杀死NodeJS子进程

时间:2014-08-07 15:50:34

标签: node.js gulp spawning

在开发过程中,我在NodeJS项目中犯了错误。错误导致这样的错误消息。

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: listen EADDRINUSE
    at exports._errnoException (util.js:742:11)
    at Server._listen2 (net.js:1148:14)
    at listen (net.js:1170:10)
    at net.js:1253:9
    at dns.js:82:18
    at process._tickCallback (node.js:343:11)

没问题,我点击了ctrl+C并重启了该过程,但我发现一些衍生的子进程仍处于活动状态。如何杀死根进程生成的所有进程?

示例代码:

module.exports.start = function(options) {
  gulp.watch(['*.js'], onServerRestart);
  onServerRestart();

  var server;
  function onServerRestart(e) {
    if (server) server.kill();
    server = require('child_process').spawn("node", ['--harmony', './server.js'], {stdio: "inherit", cwd: process.cwd() });
  };
};

2 个答案:

答案 0 :(得分:1)

添加此

  process.on('uncaughtException', function(err) {
    console.log(err);
    server.kill();
    process.kill();
  });

解决了这个问题。有关如何在您的应用中处理此问题的任何建议吗?

答案 1 :(得分:1)

这意味着,即使您可能认为已退出所有服务器,但其中一个仍然在运行,这可能是您尝试访问的服务器。

因此,请转到您的终端并输入以下内容:

killall node

这应该解决它。

BAM。