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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

供你参考,你可以用一个命令sudo fuser -k 3000/tcp来终止进程。这可以用于开发中常用的所有其他端口,如8000、8080或9000。

其他回答

如果你是windows用户,只需进入任务管理器并结束node js的所有任务

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

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用户的UI解决方案:我发现顶部的答案对我不起作用,它们似乎是Mac或Linux用户的命令。我找到了一个简单的解决方案,不需要记住任何命令:打开任务管理器(ctrl+shift+esc)。查看正在运行的后台进程。找到任何Node.js并结束任务。

在我这么做之后,这个问题就消失了。正如在其他答案中所述,它的后台进程仍然在运行,因为之前遇到了一个错误,常规的退出/清理函数没有被调用,所以杀死它们的一种方法是在任务管理器中找到该进程并在那里杀死它。如果你从终端/powerShell运行进程,你通常可以使用ctrl+c来终止它。

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

PowerShell \用户:

任务杀戮 /IM 节点.exe /F