NodeJS:如何停止Web服务器?

时间:2017-06-25 17:39:01

标签: node.js gulp webserver electron node-webkit

我正在使用插件gulp-server-livereload

var server = require('gulp-server-livereload');
gulp.src(pathDir).pipe(server({
   livereload: true,
   directoryListing: true,
   open: true,
   port: 80
}));

如何停止服务器?

我尝试了server.restart(),server.kill(),server.reset()

但总是存在这样的错误:

  

未捕获错误:收听EADDRINUSE 127.0.0.1:35729       at Object.exports._errnoException(util.js:1022:11)       at exports._exceptionWithHostPort(util.js:1045:20)       在Server._listen2(net.js:1262:14)       在听(net.js:1298:10)       at doListening(net.js:1397:7)       在GetAddrInfoReqWrap.asyncCallback [作为回调](dns.js:62:16)       在GetAddrInfoReqWrap.onlookup [as oncomplete](dns.js:81:1

0)

请帮我解决我的问题,或告诉我另一种选择 实现我的需要。

1 个答案:

答案 0 :(得分:1)

由于使用该端口的另一个进程,发生此错误。它可能只是此过程的先前实例,但是另一个应用程序可能正在使用该端口。

您将无法使用Node停止此操作,因为它是来自其他运行的剩余进程,并且进程无权管理'彼此。

在Windows上使用任务管理器来终止节点进程,在Mac上你可以使用Activity Monitor,在Unix / Linux上你可以使用htop或类似的。

或者在Unix / Linux(包括MacOS)上,您可以使用

sudo lsof -i :35729

使用该端口查找进程ID的进程ID,然后将其终止:

kill -9 {PID}

确保您的节点服务器在将来添加事件处理程序时干净地关闭:

process.on('SIGTERM', ..)

process.on('uncaughtException', ..)

并在其中调用代码以关闭您的应用程序。