node.js - Node Express 说 EADDRINUSE 但端口是免费的

标签 node.js express

当尝试启动我的 node express 服务时,我遇到了臭名昭著的错误“listen EADDRINUSE”。

这是我尝试调用 listen 的行:

var server = app.listen(3000, function() {
  console.log("listening on port %d", server.address().port);
});

问题是,我找不到任何其他正在运行的 Node 进程,也没有任何显示在端口 3000 上运行。

以下是我针对这些查询获得的结果:

$ ps aux | grep node
ec2-user  7780  0.0  0.0 110280   848 pts/1    S+   17:41   0:00 grep node

$ nestat -anp | grep 3000
<nothing>

这真是令人费解。我可以尝试回收这个盒子,但它正在运行一个实时站点,我不愿意这样做。

我还能做些什么来尝试解决这个问题吗?

编辑:阿里,谢谢你提出了我不知何故错过的显而易见的事情。我现在在端口 3300 上启动并运行。但是,当我检查 netstat 时,我也没有在其中看到 3300。这向我暗示我有某种进程在 3000 上运行,但我不知道如何找到。郑重声明,这是一个 AWS Linux AMI。

最佳答案

当您在这些端口中停止程序时,您的进程可能不会停止。 尝试在您的终端中运行这些命令。

lsof -i:<your port number>

如果你有一个表那么这意味着你的进程没有被杀死,从那个表中复制那个 PID 并运行这个命令

kill -9 <PID>

这将终止在该端口上运行的进程,在此之后,您可以将此端口用于您的程序。

关于node.js - Node Express 说 EADDRINUSE 但端口是免费的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853225/

相关文章:

javascript - 无法获取/Nodejs 错误

javascript - 如何将数据从服务器发送回浏览器?

mysql - nodejs/socket.io 与 node-mysql |安全困惑

node.js - Docker 构建在第一阶段之前运行第二阶段

java - SocketCluster - 无法从 Android 应用程序连接到服务器 - 连接被拒绝

node.js - 当 Content-Type 为 text/csv 时 Sails.js 正文内容

javascript - 当函数稍后出现错误时,console.log 不起作用

node.js - Mongoose 填充不起作用

linux - node.js 无法使用/usr/local/lib 中的 lib

angularjs - 使用 passport-http Basic + passport-local 组合时如何防止 www-authenticate header