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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

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

其他回答

出于对表格中所有答案的尊重,我想补充一点。

我发现,当我终止一个节点应用程序错误使用Ctrl + Z,非常下一次当我试图打开它得到相同的错误EADDRINUSE。

当我使用Ctrl + C终止一个节点应用程序时,下一次我打开它时,它没有任何问题。

将端口号更改为错误的端口号可以解决该问题。

的过程。On ('exit', ..)在进程崩溃或被杀死时不会被调用。它只在事件循环结束时被调用,由于server.close()在某种程度上结束了事件循环(它仍然需要等待当前正在运行的堆栈),因此将它放在退出事件中没有意义…

在崩溃时,执行进程。on('uncaughtException', ..)和on kill do进程。(SIGTERM, . .)

也就是说,SIGTERM(默认终止信号)让应用程序清理,而SIGKILL(立即终止)不会让应用程序做任何事情。

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

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

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

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

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

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

windows用户:打开任务管理器,结束任务的nodejs.exe文件,可以正常工作。