Порт 3000 всегда занят (даже если я переопределил его с помощью PORT=XYZ)
У меня есть веб-приложение, написанное на React, и всякий раз, когда я пытаюсь запустить его с react-app-rewired start
он жалуется, что Something is already running on port XYZ
.
Я проверил, прослушивает ли какой-либо процесс порт XYZ с помощью netstat -a -b
, но не было. Кроме того, если я изменю порт XYZ на любое 4-значное значение (с переменной средыPORT=3001
), У меня всегда будет одна и та же проблема, что порт уже занят, поэтому я прихожу к выводу, что порт не занят, но что-то происходит внизу. Я работаю в Windows 10 с установленным узлом 12 (я пробовал перейти на узел 10, потому что я думаю, что раньше это работало для меня с версией более низкого узла, но я больше не мог заставить его работать).
Я искал в Интернете, и большинство из них предлагают проверить, занят ли порт, несколько других, которые я нашел, приведены ниже, но у меня не сработали:
- проверить порт не занят / изменить порт
- понизить рейтинг
react-scripts
к^2.1.8
https://github.com/facebook/create-react-app/issues/7061 - проверить, есть ли в моем приложении несколько слушателей (.listen()) Node.js Порт 3000 уже используется, но на самом деле это не так?
Были ли у кого-нибудь подобные проблемы и смог ли их решить?
2 ответа
Оказывается, это Hyper-V забрал все порты... После отключения Hyper-V я смог запустить приложение узла на порту 3000.
Обходной путь для этой проблемы - зарезервировать порты при выключенном Hyper-V:
- Отключите Hyper-v (для этого потребуется несколько перезапусков)
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
- Когда вы завершите все необходимые перезагрузки, зарезервируйте нужный порт, чтобы Hyper-v не зарезервировал его обратно.
netsh int ipv4 add excludedportrange protocol=tcp startport=3000 numberofports=1
- Повторно включите Hyper-V (для этого потребуется несколько перезапусков)
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Ссылки:
Пытаться:
taskkill /im node.exe
И если процессы все еще сохраняются, вы можете принудительно завершить процессы, добавив флаг /f:
taskkill /f /im node.exe