Как исправить Error: listen EADDRINUSE: address already in use :::3000 и Vite Port 5173 is in use
Error: listen EADDRINUSE: address already in use :::3000Эта ошибка Node.js означает, что другой процесс уже слушает порт 3000 (::: - это форма IPv6
для «всех адресов»; вы можете также увидеть 127.0.0.1:3000). Часто это копия того же сервера,
которую вы запускали раньше и так и не остановили.
Vite обрабатывает ту же ситуацию иначе. По умолчанию он выводит:
Port 5173 is in use, trying another one...и запускается на следующем свободном порту, так что сервер работает, но не там, где вы ожидаете.
С --strictPort (или server.strictPort: true) Vite вместо этого завершается с сообщением
Error: Port 5173 is already in use.
Исправьте самостоятельно
Заголовок раздела «Исправьте самостоятельно»-
Найдите процесс, владеющий портом, и завершите его. В Windows:
Окно терминала netstat -ano | findstr :3000taskkill /PID 12345 /FПошаговое описание, в том числе вариант для PowerShell, приведено в разделе Поиск и завершение процесса, занимающего порт.
-
Или запустите сервер на другом порту, например
PORT=3001для многих серверов Node или--port 5174для Vite.
Чем помогает Moonpool
Заголовок раздела «Чем помогает Moonpool»Если вы запускаете сервер через Moonpool, задайте port в его записи. Тогда Moonpool:
- показывает приложение как работающее, пока что-то отвечает на этом порту, поэтому оставшийся сервер, который его занимает, выглядит как работающий, но не «управляемый Moonpool»;
- при Остановить и Перезапустить завершает всё, что по-прежнему слушает
port, еслиkillModeравенport(это значение по умолчанию для приложенийweb), так что следующий запуск находит порт свободным; - помечает два приложения, настроенных на один и тот же
port.
{ "id": "api", "name": "API", "group": "Web apps", "type": "web", "cwd": "C:\\code\\api", "command": "node server.js", "port": 3000, "env": { "PORT": "3000" }, "killMode": "port"}Moonpool не проверяет порт перед запуском. Если порт всё ещё занят, команда выводит приведённую выше ошибку во вкладке терминала приложения. Нажмите Остановить (это освободит порт) и снова Запустить.
Для Vite передайте --strictPort и держите port равным порту, который вы запрашиваете:
npm run dev -- --port 5173 --strictPortБез этого Vite может перейти на 5174, пока Moonpool продолжает следить за 5173, и индикатор состояния так и не станет сплошным.
killMode со значением port завершает любой процесс на порту, поэтому используйте его только
для портов, которые больше никому не нужны. Для приложений Docker в Windows никогда его не
используйте. См. Остановка и перезапуск.
См. также
Заголовок раздела «См. также»Moonpool: бесплатное программное обеспечение от FasterDB