Ответ 1
Это означает, что используется адрес, который вы пытаетесь связать с сервером. Попробуйте другой порт или закройте программу, используя этот порт.
Я тестирую сервер, написанный в nodejs на окнах 7 и когда я пытаюсь запустить тестер в командной строке, я получаю следующую ошибку:
Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)
как я могу исправить его без перезагрузки?
Это означает, что используется адрес, который вы пытаетесь связать с сервером. Попробуйте другой порт или закройте программу, используя этот порт.
Run:
ps -ax | grep node
Вы получите что-то вроде:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
Тогда do:
kill -9 60778
Следующая команда даст вам список запущенных процессов node.
ps | grep node
Чтобы освободить этот порт, остановите процесс, используя следующие.
kill <processId>
В Linux (по крайней мере, производные Ubuntu)
killall node
проще, чем эта форма.
ps | grep <something>
kill <somepid>
Ни один из них не будет работать, если у вас есть ребенок-сирота, держащий порт. Вместо этого сделайте следующее:
netstat -punta | grep <port>
Если порт удерживается, вы увидите что-то вроде этого:
tcp 0 0.0.0.0:<port> 0.0.0.* LISTEN <pid>/<parent>
Теперь убить pid:
kill -9 <pid>
Вы получаете ошибку EADDRINUSE
потому что порт, который ваше приложение хочет использовать, занят другим процессом. Чтобы освободить этот порт, вам нужно прекратить процесс оккупации.
Поскольку вы находитесь в Windows, вы можете завершить процесс, используя командную строку (cmd
). С помощью cmd
вы можете обнаружить идентификатор процесса (PID) приложения блокировки. Вам понадобится PID, чтобы прервать/убить процесс.
Вот пошаговое руководство...
Найдите все процессы, выполняемые на указанном порту (в этом примере порт "3000"):
netstat -ano | найти ": 3000"
Команда netstat
будет отображать все процессы, выполняемые на указанном порту. В последнем столбце результатов netstat
вы можете увидеть PID
(в этом примере PID - "8308"). Вы можете узнать больше об определенном PID
, выполнив следующую команду:
tasklist/fi "pid eq 8308"
Если вы хотите завершить процесс, вы можете сделать это с помощью следующей команды, используя свой PID
(в этом примере PID - "8308"):
taskkill/pid 8308/f
Скриншот
Когда вы получите сообщение об ошибке Ошибка: прослушайте EADDRINUSE,
Попробуйте выполнить следующие команды оболочки:
netstat -a -o | grep 8080
taskkill /F /PID 6204
I grep
ed для 8080, потому что я знаю, что мой сервер работает на порту 8080. (static
говорит мне, когда я начинаю его: "обслуживать". "at http://127.0.0.1:8080 '.) Возможно, вам придется искать другой порт.
Предположим, что ваш сервер работает на port 3000
lsof -i tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 11716 arun 11u IPv6 159175 0t0 TCP *:3000 (LISTEN)
после этого используйте kill -9 <pid>
в приведенном выше случае sudo kill -9 11716
используйте команду ниже, чтобы убить процесс, запущенный на определенном порту - 3000 в этом примере ниже
kill -9 $(lsof -t -i:3000)
Одним из возможных решений, которые работали для меня, было просто закрыть окно в браузере, где у меня был соответствующий " http://localhost:3000/" script работает.
Когда вы получите сообщение об ошибке
Ошибка: прослушивание EADDRINUSE
Откройте командную строку и введите следующие инструкции:
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
после перезапуска интерфейса разрыва телефона.
Если вы хотите узнать, какая телефонная задержка идентификатора процесса открыта, откройте TASK MANAGER и посмотрите заголовок столбца PID и найдите номер PID.
Вышеупомянутый узел killall -9
, предложенный Патриком, работает так, как ожидалось, и решает проблему, но вы можете прочитать часть редактирования этого самого ответа о том, почему kill -9
возможно, не лучший способ сделать это.
Кроме того, вы можете настроить таргетинг на один процесс, а не слепо убивать все активные процессы.
В этом случае сначала получите идентификатор процесса (PID) процесса, выполняющегося на этом порту (скажем, 8888):
lsof -i tcp:8888
Это вернет что-то вроде:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 57385 You 11u IPv6 0xac745b2749fd2be3 0t0 TCP *:ddi-tcp-1
(LISTEN) Тогда просто сделайте (ps - на самом деле нет. Пожалуйста, продолжайте читать ниже):
kill -9 57385
вы можете изменить свой порт в app.js или в файле конфигурации проекта ur.
по умолчанию ('порт', 80)
и чтобы убедиться, что порт 80 уже используется, вы можете сделать
netstat -antp | grep 80
netstat -antp | grep node
вы можете посмотреть, работает ли процесс node или нет.
ps -ef | grep node
и если вы обнаружите, что он уже запущен, вы можете убить его, используя
killall node
Это работает на Mac:
Шаг 1.
sudo lsof -i tcp:3000 (or whatever port you want to kill)
Выше команда даст вам Id процесса, которые в настоящее время хранят порт.
Шаг 2.
Kill -9 <pid>
Я создал 2 сервера, прослушивая один и тот же порт 8081, работая от одного и того же кода, изучая
Работа сервера 1-го сервера Сбой 2-го сервера с EADDRINUSE
node.js задержки обратного вызова могут быть причиной того, что ни работало, ни создалось 2-е создание сервера, а программа завершена, поэтому 1-й сервер также закрыт
2 подсказка для сервера, я получил от: Как исправить ошибку: прослушивать EADDRINUSE при использовании nodejs?
Ошибка: прослушайте EADDRINUSE, чтобы решить его в Ubuntu, запустите в терминале netstat -nptl
, и после этого kill -9 {process-number}
эта команда должна убить процесс node, и теперь вы можете попробовать снова запустить команду node server.js
Ex
слушать EADDRINUSE: 8080
netstat -nptl
tcp6 0 0: 9000: * LISTEN 9660/java
tcp6 0 0: 5800: * LISTEN -
tcp6 0 0: 5900: * LISTEN -
tcp6 0 0: 8080: * LISTEN 10401/node
tcp6 0 0: 20080: * LISTEN 9660/java
tcp6 0 0: 80: * LISTEN -
tcp6 0 0: 22: * LISTEN -
tcp6 0 0: 10137: * LISTEN 9660/java
kill -9 10401
Проверьте идентификатор процесса
судо лсоф -i: 8081
Чем убить конкретный процесс
sudo kill -9 2925
У меня есть node красный, установленный на моем Mac и мой малиновый Pi. Если бы точно такая же проблема и выполнение "killall" не помогло. Как только я закрыл Малиновый Пи и перезапустил свой компьютер, он работал нормально.
Возможно, вы попытались запустить команду запуска npm на двух разных вкладках. Вы не можете запустить npm-запуск, когда он уже запущен в какой-либо вкладке .check его один раз.
Для всех, кто пробовал все вышеперечисленное, но все еще не может найти процесс румян, попробуйте их все снова, но убедитесь, что вы добавили "sudo" перед командами.
Если вам больше нравится UI, найдите процесс Node.js в диспетчере задач Windows и убейте его.
ps -ef | grep node найти app.js, kill pid app.js
просто убить узел как узел pkill -9 в терминале ubantu, чем пусковой узел
Чтобы убить сервер узла, сначала выполните эту команду в своем терминале:
top
id
сервера из предыдущего окна: PID number -9 kill
так что теперь вы убили сервер узла снова, чтобы запустить приложение.В моем случае перезапуск машины решил проблему.
Я использовал команду netstat -ano | grep "portnumber"
netstat -ano | grep "portnumber"
для перечисления номера порта /PID для этого процесса. Затем вы можете использовать taskkill -f//pid 111111
чтобы taskkill -f//pid 111111
процесс, причем последним значением будет pid, который вы найдете в первой команде.
Иногда я сталкиваюсь с проблемой перезапуска узла даже после завершения процесса, поэтому мне нужно использовать старый добрый диспетчер задач, чтобы вручную завершить процесс узла.
В окне выполните следующую команду:
taskkill /F /PID 1952