我有一个使用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楼
此问题的原因是:
- 像Skype这样的端口可能正在运行任何应用程序。
- 节点可能已崩溃,端口可能尚未释放。
- 您可能尝试启动多个服务器。 为了解决这个问题,可以维护一个布尔值来检查服务器是否已经启动。 仅当boolean返回false或undefined时,才应启动该方法。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3171547