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>
这将杀死在该端口上运行的进程,在此之后,您可以使用此端口为您的程序。