我有一个简单的服务器运行在node.js使用连接:

var server = require('connect').createServer();
//actions...
server.listen(3000);

在我的代码中,我有实际的处理程序,但这是基本的思想。我一直遇到的问题是

EADDRINUSE, Address already in use

我收到这个错误时再次运行我的应用程序后,它以前崩溃或错误。因为我没有打开一个新的终端实例,所以我用ctr + z关闭了这个进程。

我非常确定我所要做的就是关闭服务器或连接。我尝试在进程中调用server.close()。(“退出”,…);运气不好。


当前回答

这个命令列出了与“节点”相关的任务,并终止了每个任务。

kill -9  $( ps -ae | grep 'node' | awk '{print $1}')

其他回答

Linux

运行ps并确定节点进程的PID。

然后执行sudo kill PID

窗户

使用tasklist显示正在运行的进程列表:

tasklist /O

然后,像这样(使用tasklist命令获得的PID)杀死节点进程:

taskkill /pid PID

我找到了这个解决办法,试试吧 使用sudo给予许可

  sudo pkill node

对于所有来到这个帖子并尝试了所有可能使用无恶魔或永远做到这一点的人。 例如,如果你跑步 端口= 6060 Nodemon 您可能会得到端口6060已被使用的相同错误。

如果是这种情况,如果你真的需要在运行过程中定义port,那么就运行你的项目而不使用nodemon。或者,如果你想坚持使用nodemon,你可以在你的文件中定义port。

对我来说,我现在这样做PORT=6060 node app.js

现代Windows (powershell)

当前版本的Windows默认使用Powershell而不是cmd。你可以这样跑:

Get-NetTCPConnection | where Localport -eq 3000 | select Localport,OwningProcess

找出这个应用是什么。

出现这个问题的原因是:

任何一个应用程序都可以在这个端口上运行,比如Skype。 节点可能已经崩溃,端口可能没有被释放。 您可能已经尝试启动多个服务器。为了解决这个问题,可以维护一个布尔值来检查服务器是否已经启动。只有当boolean返回false或undefined时才应该启动;