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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

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

其他回答

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

在Windows上,我得到以下错误:

EADDRINUSE:地址已经在使用:::8081。

遵循以下步骤:

以管理员身份打开CMD 执行以下操作

命令netstat -ano|findstr "PID:8081"

得到以下流程:

通过:

Taskkill /pid 43144 /f

在MAC上你可以这样做:

raghavkhunger@MacBook-Air ~ % lsof -i tcp:8081 命令pid user fd类型设备大小/关闭节点名称 节点23722用户名24u IPv6 0xeed16d7ccfdd347 0t0 TCP *:sunproxyadmin (LISTEN)

username@MacBook-Air ~ % kill -9 23722

使用以下命令检查PID,即运行在端口3000上的进程id:

lsof -i tcp:3000

它将输出如下内容:

COMMAND  PID   USER   FD   TYPE  DEVICE  SIZE/OFF NODE NAME
node     5805  xyz    12u  IPv6  63135    0t0     TCP  *:3000 (LISTEN)

现在使用以下命令终止进程:

kill -9 5805

我也有同样的问题,但我发现这不是恶魔的问题。首先,我使用这个脚本开始我的过程:

{"dev": "nodemon -r dotenv/config app.js"}

应用程序可以正确启动,但只要任何文件改变,nodemon就不能重新启动它。与此同时,应用程序仍在后台继续运行。如果我按Ctrl+C,它退出,但端口3000上没有更多的进程,所以通过端口fuser -k 3000/tcp杀死它没有任何作用。

并且,我在app.js文件中使用。env端口。

const port = process.env.PORT || 3000;

因此,我只将端口值更改为3000,它就工作了。

const port = 3000;

我不得不找到另一种方法来加载.env文件,但这解决了我的问题。希望这能有所帮助。

bash$ sudo netstat -ltnp | grep -w ':3000'
 - tcp6    0      0 :::4000      :::*        LISTEN      31157/node      

bash$ kill 31157