节点/ Express:EADDRINUSE,地址已在使用中-终止服务器

余生长醉 提交于 2020-02-26 13:30:58

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

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

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

EADDRINUSE, Address already in use

在先前崩溃或错误后再次运行我的应用程序时,我收到此错误。 由于我没有打开终端的新实例,因此使用ctr + z结束了该过程。

我可以肯定,我要做的就是关闭服务器或连接。 我尝试在process.on('exit', ...);调用server.close() process.on('exit', ...); 没有运气。


#1楼

节点正在内存中的某个位置运行,并且该端口已锁定。 在Windows上,将像大多数Windows问题一样,通过按CTRL + ALT + DEL和/或重新启动来解决此问题。


#2楼

我在运行win8的笔记本电脑上点击了这个。 这工作。

以“管理员”身份运行cmd.exe:

C:\Windows\System32>taskkill /F /IM node.exe
SUCCESS: The process "node.exe" with PID 11008 has been terminated.

#3楼

您可以使用热节点来防止服务器崩溃/运行时错误。 每当节点程序[源] /进程[运行节点程序]发生更改时,热节点都会自动为您重新启动nodejs应用程序。

使用npm使用全局选项安装热节点:

npm install -g hotnode


#4楼

我一次遇到此错误,并在这里采用了许多方法。

我的问题是我有两个app.listen(3000); 在相同的app.js脚本中调用。 第一个app.listen()成功,第二个引发错误。

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


#5楼

此问题的原因是:

  1. 像Skype这样的端口可能正在运行任何应用程序。
  2. 节点可能已崩溃,端口可能尚未释放。
  3. 您可能尝试启动多个服务器。 为了解决这个问题,可以维护一个布尔值来检查服务器是否已经启动。 仅当boolean返回false或undefined时,才应启动该方法。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!