首页 文章

NodeJS:如何停止Web服务器?

提问于
浏览
0

我正在使用插件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()

但总是有这样的错误:

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

0)

请帮我解决我的问题或告诉我另一个选项如何实现我的需要 .

1 回答

  • 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', ..)
    

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

相关问题