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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

对于macOS Monterey(12.0):

苹果公司在macOS Monterey上对AirPlay进行了一些更改。现在,它使用5000和7000端口。如果在项目中使用这些端口,则需要禁用此功能。

系统首选项>共享>取消AirPlay接收器


macOS Ventura(13.0)及以上用户:

系统设置>常规>禁用AirPlay Receiver

其他回答

我正在使用调试器,只是没有停止使用Ctrl+C运行的进程。当我想开始调试时,我得到了这个错误。

Linux

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

然后执行sudo kill PID

窗户

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

tasklist /O

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

taskkill /pid PID

我还有另一个问题。我已经申报了两次港口。不要再犯那个错误了。

app.listen(port, function () {
  console.log('Example app listening on port')
})

app.listen(3000, function() {
  console.log("Server started on port 3000");
});

而是这样做:

const port = 3000;

app.listen(port, function () {
  console.log('Example app listening on port')
})

对于windows,打开任务管理器,找到node.exe进程。用结束任务杀死所有敌人

节点正在内存中的某个地方运行,并且锁定了该端口。在Windows上,这个问题会发生,像大多数Windows问题一样,通过按CTRL+ALT+DEL和/或重新启动来解决。