Node Express说EADDRINUSE但端口是免费的

当试图开始我的节点快递服务,我遇到了臭名昭着的错误“听EADDRINUSE”。

这里是我试图调用listen的那一行:

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> 

这是相当莫名其妙的。 我可以尝试回收箱子,但它运行的是现场,我不愿意这样做。

还有什么我可以做的,试图解决这个问题?

编辑:谢谢,阿里,build议显而易见的事情,我不知何故错过了。 我现在在3300端口上运行。但是,当我检查netstat时,我也没有看到3300。 这暗示着我有一些运行在3000上的stream程,我不知道该如何find。 为了logging,这是一个AWS Linux AMI。

也许你的程序不停止,当你在这些端口停止你的程序。 尝试在terminal中运行这些命令。

 lsof -i:<your port number> 

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

 kill -9 <PID> 

这将杀死在该端口上运行的进程,在此之后,您可以使用此端口为您的程序。