Node Express说EADDRINUSE但端口是免费的

时间:2014-07-20 17:46:46

标签: node.js express

当尝试启动我的节点快递服务时,我遇到了臭名昭着的错误"听EADDRINUSE。"

这是我尝试拨打电话的地方:

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

问题是,我无法找到正在运行的任何其他节点进程,也没有显示在端口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。

1 个答案:

答案 0 :(得分:0)

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

lsof -i:<your port number>

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

kill -9 <PID>

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