Node js прослушивает ошибку EADDRINUSE для простого httpserver
У меня есть простой сервер node js http.
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
Если я запустил
node basicserver.js
Я получаю
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: listen EADDRINUSE
at errnoException (net.js:642:11)
at Array.0 (net.js:743:26)
at EventEmitter._tickCallback (node.js:192:40)
Я видел этот пост, но это сообщение, похоже, специфично для TCP-сервера, а не для http-сервера. Может ли кто-нибудь помочь.
Ответы
Ответ 1
Порт, который вы слушаете, уже прослушивается другим процессом. В этом случае у меня появилось ощущение, что это ваше. Вы можете сделать ps aux | grep node
, а затем с помощью kill <pid>
убейте свой node процесс. Кроме того, вы также можете попробовать другой порт.
- Update -
Если вы хотите найти, какой процесс прослушивает, вы можете использовать netstat -lpn
(-l
- чтобы узнать порты прослушивания, -p
- включить имя процесса и pid, -n
- не разрешать имена хостов, иначе он будет медленным), чтобы найти процессы, которые прослушиваются на разных портах. Если их было слишком много, вы можете сделать netstat -lnp | grep :8888
.
Также можно использовать fuser 8888/tcp
, который покажет вам процесс pid, а также добавление -k
убьет процесс, самый быстрый способ когда-либо.
Я понял, что эти две команды работают только в Linux.
Ответ 2
Чтобы убить все эксперименты на моей машине...
killall node
Ответ 3
Порт, который вы слушаете, уже прослушивается другим процессом.
Когда я столкнулся с этой ошибкой, я убил процесс с помощью Windows PowerShell (потому что я использовал Windows)
- откройте Windows PowerShell
- напечатайте
ps
и тогда вы сможете получить список процессов - найдите процесс с именем
node
и обратите внимание на Id
- тип
Stop-process <Id>
Я думаю, что это помощь для пользователей Windows.
Ответ 4
Такая же проблема может возникнуть при попытке запустить сервер, но у вас нет привилегий root.
Ответ 5
Я также столкнулся с этой проблемой с EADDRINUSE 127.0.0.1. После проверки процессов Node я изменил IP-адрес сервера на "localhost". После этого все началось. Надеюсь, это поможет.
Ответ 6
На моем Linux Mint
работают только PID
kill:
netstat -nltp | grep 8080
netstat -nltp | grep 8080
- показывает PID
порта 8080
, мой вывод:
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 27599/node
- PID
сервера dev-сервера в моем случае - 27599
а потом убей
kill -9 <PID>
kill -9 27599
Преамбула:
Не знаю, что за ошибка, но я запускаю свой сервер WebPack вроде npm run dev
:
webpack-dev-server --hot --host int.loc --port 8080
И когда его прерывают - в терминале с помощью Ctrl+C
и запускают его снова - он вызывает ту же ошибку Error: listen EADDRINUSE 127.0.0.1:8080
, но все время, пока он не работал идеально.
killall node
не помог.
Ответ 7
Для пользователей Windows: в Powershell вы можете использовать:
Stop-Process -Name "ProcessName" -Force
В этом случае "ProcessName"
будет "node"
.
Больше информации здесь: Как убить процесс в Windows