Node.js LinuxWindowsmacOS

Node.js: Error: listen EADDRINUSE :::3000

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Остановите процесс, занявший порт, или смените порт.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Как найти процесс
  5. Как освободить порт
  6. Профилактика
  7. Как проверить, что порт свободен
  8. Где скачать и что открыть

#Что означает ошибка

Сообщение
EADDRINUSE

Ошибка EADDRINUSE при запуске Node.js-сервера означает, что нужный порт (чаще 3000 или 8080) уже занят другим процессом. Операционная система не позволяет двум приложениям слушать один и тот же порт на одном адресе. Чаще всего «виновник» — предыдущий запуск того же проекта, который не завершился.

Это типичная ситуация в разработке: терминал закрыли, а процесс остался в фоне; запустили второй экземпляр в другом окне; Docker-контейнер или другая программа используют тот же порт.

Остановите процесс, занявший порт, или смените порт.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Порт занятПроцесс.Проявляется как «EADDRINUSE» или близкий по смыслу сбой.Завершите.
Дубль запускаТерминал.Проявляется как «EADDRINUSE» или близкий по смыслу сбой.Остановите.
DockerПорт.Проявляется как «EADDRINUSE» или близкий по смыслу сбой.Освободите.
Фоновый сервисСтарый.Проявляется как «EADDRINUSE» или близкий по смыслу сбой.Убейте.

#Пошаговое решение

  1. Найдите процесс, занявший портВ терминале Windows выполните netstat -ano | findstr :3000; среди строк найдите состояние LISTENING и PID. В Linux ss -ltnp "sport = :3000", в macOS lsof -nP -iTCP:3000 -sTCP:LISTEN. Укажите собственный порт, если он другой.
  2. Убедитесь, что процесс вашНа Windows в Диспетчере задач → «Подробности» сопоставьте PID с именем процесса; в Linux/macOS ps -p PID -o pid,comm,args после подстановки числа. Если это чужая служба, не завершайте её. Если это ваш dev-сервер, остановите его сочетанием Ctrl+C в исходном терминале либо через штатный менеджер процессов.
  3. Либо назначьте свободный портВ конфигурации приложения читайте process.env.PORT и выберите незанятое значение, например 3001; в PowerShell $env:PORT=3001; node app.js, в Unix PORT=3001 node app.js. Учитывайте, что адрес фронтенда и обратного прокси тоже может ссылаться на прежний порт.
  4. Проверьте успешное прослушиваниеЗапустите приложение, откройте http://localhost:3001 (или порт из лога) и убедитесь в ответе. Если старый процесс возвращается после остановки, проверьте pm2 list, службы systemd или docker ps на фактический автозапуск; не выполняйте pm2 delete all или kill -9 для всех процессов.

#Как найти процесс

На Linux и macOS выполните lsof -i :3000 или ss -ltnp | grep 3000, чтобы увидеть PID процесса. В Windows используйте netstat -ano | findstr :3000, а затем tasklist /FI "PID eq номер". Это покажет, какой программе принадлежит порт.

#Как освободить порт

Завершите процесс командой kill PID (или taskkill /PID номер /F в Windows). Если процесс принадлежит нужной службе, измените порт приложения через переменную окружения PORT. Используйте инструменты вроде nodemon или pm2, которые корректно управляют перезапусками, а не запускайте несколько копий вручную.

#Профилактика

Корректно обрабатывайте сигналы SIGINT и SIGTERM и закрывайте сервер методом server.close() перед выходом. В конфигурации проекта берите порт из окружения, а не прописывайте жёстко. Для портов ниже 1024 на Linux нужны особые права — используйте обратный прокси (nginx) вместо запуска Node.js от root.

Linux · Терминал (Bash)С осторожностью
Поиск процесса на порту 3000 и принудительное завершение; PID замените на номер из первой команды.
ss -ltnp "sport = :3000"

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как проверить, что порт свободен

После завершения процесса повторите команду поиска: она не должна выводить строк для нужного порта. Затем запустите приложение и откройте адрес в браузере. Если порт снова оказывается занятым после каждой перезагрузки, ищите службу автозапуска (systemd-юнит, pm2, Docker-контейнер с публикацией порта) — завершать процесс вручную бесполезно, пока не отключён его источник.

#Где скачать и что открыть

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.