listen EADDRINUSE: address already in use -> 无论我使用哪个端口?
listen EADDRINUSE: address already in use -> No matter what port I use?
NodeJS 版本:LTS 12.17 安装如下:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs
我有一个很奇怪的问题:
我的一个 NodeJS 应用程序突然报告:listen EADDRINUSE: address already in use
无论我尝试将其更改为哪个端口,它都没有任何帮助?
完整的跟踪堆栈如下所示:
Error: listen EADDRINUSE: address already in use 0.0.0.0:6080
at Server.setupListenHandle [as _listen2] (net.js:1313:16)
at listenInCluster (net.js:1361:12)
at doListen (net.js:1498:7)
at processTicksAndRejections (internal/process/task_queues.js:85:21)
我正在这样听(_wl = Winston 记录器实例):
> _server.listen(_port, '0.0.0.0', function () { _wl.info('SERVER STARTED! (listening on port # ' + _port + ')')});
我刚刚设置了这个 AWS EC2 Ubuntu 20.04 实例 - 所以我猜它与此有关。它已经在早期 Windows 的许多不同实例上工作了多年(我想我以前从未 运行 它在 Ubuntu 之前)。
我像这样执行:
1. cd into folder
2. node ./server.js (I have also tried to use Sudo)
会不会跟权限有关?
我已尝试允许所有进/出流量进入安全组的服务器。
我检查过 Ubuntu 20.04 中的防火墙也被禁用了。
此外,在同一台服务器上,我正在 运行 宁一个 Python 应用程序,它公开了一个网络套接字服务器,NodeJS 应用程序没有问题订阅此连接...
是的 - 我已尝试检查服务器上使用的所有端口,但只有少数端口在使用中。
NodeJS 应用程序还尝试在给定端口公开一个 websocket 服务器 - 但无论我尝试使用哪个端口,我都会收到上述错误。
对不起!
我在我的 NodeJS 应用程序中使用 express,我的大多数应用程序都包含以下行:
app.listen(port); // In this case port # 6080
稍后在当前应用程序中(我遇到了上述问题)我也像这样初始化了一个网络套接字服务器:
const _server = require('http').createServer();
_server.on('request', app);
_server.listen(_port, '0.0.0.0', function () { _wl.info('WEB SOCKET SERVER STARTED! (listening on port # ' + _port + ')')});
在上面的代码中,port
和 _port
使用相同的 ENV variable/setting(6080)。对我的 app/Express 在这种情况下实际上没有使用 app.listen(port)
任何东西并且 Windows 只是选择否决端口的用例,当 Web 套接字服务器随后被初始化时相同的端口号 --> 是我从未在 Windows 上遇到任何问题的原因。但是Linux/Ubuntu在这方面比较敏感
干杯! :-)
NodeJS 版本:LTS 12.17 安装如下:
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs
我有一个很奇怪的问题:
我的一个 NodeJS 应用程序突然报告:listen EADDRINUSE: address already in use
无论我尝试将其更改为哪个端口,它都没有任何帮助?
完整的跟踪堆栈如下所示:
Error: listen EADDRINUSE: address already in use 0.0.0.0:6080
at Server.setupListenHandle [as _listen2] (net.js:1313:16)
at listenInCluster (net.js:1361:12)
at doListen (net.js:1498:7)
at processTicksAndRejections (internal/process/task_queues.js:85:21)
我正在这样听(_wl = Winston 记录器实例):
> _server.listen(_port, '0.0.0.0', function () { _wl.info('SERVER STARTED! (listening on port # ' + _port + ')')});
我刚刚设置了这个 AWS EC2 Ubuntu 20.04 实例 - 所以我猜它与此有关。它已经在早期 Windows 的许多不同实例上工作了多年(我想我以前从未 运行 它在 Ubuntu 之前)。
我像这样执行:
1. cd into folder
2. node ./server.js (I have also tried to use Sudo)
会不会跟权限有关?
我已尝试允许所有进/出流量进入安全组的服务器。
我检查过 Ubuntu 20.04 中的防火墙也被禁用了。
此外,在同一台服务器上,我正在 运行 宁一个 Python 应用程序,它公开了一个网络套接字服务器,NodeJS 应用程序没有问题订阅此连接...
是的 - 我已尝试检查服务器上使用的所有端口,但只有少数端口在使用中。 NodeJS 应用程序还尝试在给定端口公开一个 websocket 服务器 - 但无论我尝试使用哪个端口,我都会收到上述错误。
对不起!
我在我的 NodeJS 应用程序中使用 express,我的大多数应用程序都包含以下行:
app.listen(port); // In this case port # 6080
稍后在当前应用程序中(我遇到了上述问题)我也像这样初始化了一个网络套接字服务器:
const _server = require('http').createServer();
_server.on('request', app);
_server.listen(_port, '0.0.0.0', function () { _wl.info('WEB SOCKET SERVER STARTED! (listening on port # ' + _port + ')')});
在上面的代码中,port
和 _port
使用相同的 ENV variable/setting(6080)。对我的 app/Express 在这种情况下实际上没有使用 app.listen(port)
任何东西并且 Windows 只是选择否决端口的用例,当 Web 套接字服务器随后被初始化时相同的端口号 --> 是我从未在 Windows 上遇到任何问题的原因。但是Linux/Ubuntu在这方面比较敏感
干杯! :-)