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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

简单地退出服务器,并将服务器端口3000更改为31000,其工作正常。

其他回答

首先,您需要知道哪个进程正在使用端口3000

sudo lsof -i :3000

这将列出该端口上所有的PID监听,一旦你有了PID,你可以用下面的方法终止它:

kill -9 <PID>

其中,将<PID>替换为进程ID或进程ID列表,即前面的命令输出。

您可以使用热节点来防止服务器崩溃/运行时错误。当节点程序[source] /进程[running node program]发生变化时,Hot-node会自动重启nodejs应用程序。

使用global选项使用npm安装hot-node:

安装-g hotnode

出现这个问题的原因是:

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

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

  sudo pkill node

以防万一,检查一下你是否错误地多次添加了这一行

app.listen(3000, function() {
  console.log('listening on 3000')
});

上面的代码是用于表达的,但只要检查一下您是否试图在代码中两次使用相同的端口。