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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

我得到这个错误一次,并采取了许多方法在这里。

我的问题是我有两个app.listen(3000);在同一个app.js脚本中调用。第一个app.listen()在第二个抛出错误的地方成功了。

我遇到的另一个帮助我调试的有用命令是sudo fuser -k 3000/tcp,它会杀死你可能启动的任何恶意进程(一些进程可能会重新启动,例如,如果使用forever.js运行,但它对我很有用)。

其他回答

这意味着你有两个节点服务器运行在同一个端口上,如果一个运行在端口上,比如3000,将另一个端口更改为另一个端口,比如3001,一切都将正常工作

Linux

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

然后执行sudo kill PID

窗户

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

tasklist /O

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

taskkill /pid PID

我得到这个错误一次,并采取了许多方法在这里。

我的问题是我有两个app.listen(3000);在同一个app.js脚本中调用。第一个app.listen()在第二个抛出错误的地方成功了。

我遇到的另一个帮助我调试的有用命令是sudo fuser -k 3000/tcp,它会杀死你可能启动的任何恶意进程(一些进程可能会重新启动,例如,如果使用forever.js运行,但它对我很有用)。

在我的例子中,这个问题是由NodeJS环境引起的

两种解决方案:

打开任务管理器,关闭所有Nodejs进程(名称:Node.js JavaScript Runtime) 尝试将服务器的端口从3000更改为当前未被使用的其他端口(例如:3111)。

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

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')
})