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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

任务管理器(ctrl+alt+del) -> .使用实例

进程选项卡->

选择“node.exe”进程,点击“结束进程”

其他回答

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

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

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

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

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

尝试更改端口号。这对我很管用。 例如,可以将端口号从3000修改为3001。

我想知道,为什么还没有人提到这种可能性:

如果你用字符串(有意或无意)提供::listen(port),这将不是一个有效的端口号表示,然后它可以在内部转换为端口号-1,然后引擎将尝试连接到那个-1端口,然后产生相同的EADDRINUSE错误,这反过来可能会有点混乱,让你在错误修复搜索的错误方向(hi, me xD)。

因此,在开始检查使用端口的进程之前,调试代码并检查传递给函数的确切内容。