【问题标题】:NodeJS: How to stop a web server?NodeJS:如何停止 Web 服务器?
【发布时间】:2017-11-28 15:43:18
【问题描述】:

我正在使用插件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 在 Object.exports._errnoException (util.js:1022:11) 在exports._exceptionWithHostPort (util.js:1045:20) 在 Server._listen2 (net.js:1262:14) 在听 (net.js:1298:10) 在 doListening (net.js:1397:7) 在 GetAddrInfoReqWrap.asyncCallback [作为回调] (dns.js:62:16) 在 GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:1

0)

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

【问题讨论】:

  • 你为什么要标记electronnode-webkit,你的gulpfile是什么时候加载的,你是否关闭了所有以前的进程,因为错误说端口35729已经在使用中。

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


【解决方案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', ..)

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

【讨论】:

  • 怎么做?我正在写 server.exit()。但是输出是一个错误:Uncaught TypeError: server.exit is not a function
  • 我不需要杀掉整个进程,只需要gulp-server-livereload。该过程本身应该可以工作,我需要为 gulp-server-livereload 指定一个不同的目录。
  • 端口正在使用中 - 所以你需要杀死之前正在运行的实例
  • 这个或另一个应用程序确实使用了这个特定的端口。
猜你喜欢
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 2022-01-24
  • 2019-07-27
  • 1970-01-01
相关资源
最近更新 更多