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

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

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

EADDRINUSE, Address already in use

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

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


当前回答

使用netstat获取所有节点进程和它们正在使用的端口,然后通过PID杀死你想要的唯一一个

netstat -lntp | grep node

您将获得所有节点进程

tcp6  0      0 :::5744    :::*    LISTEN     3864/node

然后当你得到PID(3864)时,通过PID终止进程

  kill -HUP PID 

其他回答

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

bash$ kill 31157

删除项目根目录中未定义的文件(在应用程序崩溃时创建的)

这意味着你有两个节点服务器运行在同一个端口上,如果一个运行在端口上,比如3000,将另一个端口更改为另一个端口,比如3001,一切都将正常工作

下面是一行代码(将3000替换为端口或配置变量):

kill $(lsof -t -i:3000)

这发生在我身上,因为我在我的ubuntu中打开了多个visual studio实例而没有注意到它,其中一个实例中已经运行了xdebug。