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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

在我的回答中重写@Gerard的评论:

在类unix操作系统上尝试pkill nodejs或pkill node。

这将杀死运行在任何端口上的节点服务器的进程。 为我工作。

其他回答

ps aux | grep node
kill -9 [PID] (provided by above command)

描述:


Ps将给出进程状态,aux提供a:所有用户进程,u:用户自己的进程,x:所有其他未连接到终端的进程的列表。 管道符号:|将传递ps aux的结果以进行进一步操作。 Grep将从ps aux提供的列表中搜索所提供的字符串(在本例中为节点)。

Server.close()需要一段时间来关闭连接,因此我们应该将其作为一个异步调用:

await server.close();

重要的是: 当使用await时,我们必须在封装函数中使用async关键字:

async () => {
  await server.close();
}

在Linux上。

给~/.bashrc添加函数:

function killTcpListen () {
  kill -9 $(lsof -sTCP:LISTEN -i:$1 -t)
}

Pull changes: source ~/.bashrc

并使用它:killTcpListen 3000

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

我也面临着同样的问题。我刚刚把我的端口号从8000改成了6000。 当你有3000的时候,你可以尝试5000、4000、7000、8000等等。