【问题标题】:My express server is not exiting with both ctrl + c and process.exit(1)我的快递服务器没有同时退出 ctrl + c 和 process.exit(1)
【发布时间】:2020-07-30 13:53:59
【问题描述】:

我收到一条错误消息:

监听 EADDRINUSE:地址已在使用 :::3000。

当我在删除服务器启动代码(即 app.listen 部分)后尝试时,什么也没有发生

const path = require('path')
const express = require('express') 
//var publicPathDirectory = path.join(__dirname,"../public")
const app = express()
app.listen(3000,()=>{
    console.log('server started')
})

process.on('SIGINT', function() {
    console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" );
    // some other closing procedures go here
    process.exit(1);
  });

【问题讨论】:

  • 您的 3000 端口正被其他进程使用。简单的解决方法是更改​​端口号。这可以通过将app.listen(3000,()->{ 行中的 3000 更改为其他数字(例如 3001 或 3002 甚至 4000)来完成。实际解决此问题的正确方法是找出使用端口 3000 的程序并评估它是否需要是否并行运行。 helpdeskgeek.com/networking/determine-open-and-blocked-ports(参考那个来检查windows中使用的端口)。
  • 谢谢您,将端口更改为3001后,它可以工作,但是如何在端口3000上停止服务器
  • 你在哪个操作系统上运行?
  • @Y4glory,Windows 7
  • 感谢您的支持,但我已使用命令 netstat -ano | 解决了我的问题find "LISTENINIG" 找到 "3000" 获取 pid 然后 taskkill /pid PID_NO /f 强制终止进程

标签: node.js


【解决方案1】:

我以前也遇到过这种情况,即使我使用 CTRL+C 退出节点服务器,它仍然占用 3000 端口。您可以使用以下命令终止节点:

pkill -f node

可能与Node.js Port 3000 already in use but it actually isn't?有关

【讨论】:

  • pkill 不是我遇到的内部或外部命令错误
【解决方案2】:

仅当您有一个失败的出口时,才在出口内使用数字 1。要强制退出,请勿在 exit() 中使用数字。

process.exit()

请看这里。或许你能理解。 link

【讨论】:

  • 控制台中没有打印任何内容。即它没有进入该函数内部
猜你喜欢
  • 2020-04-28
  • 2012-09-10
  • 2018-06-29
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多