Я работал с проектом node.js в течение нескольких недель, и он отлично работал. Обычно я npm start
запускаю свое приложение и просматриваю его в браузере на локальном хосте, порт 3000.
Сегодня я начал получать следующую ошибку при использовании npm start:
Server started on port 3000
Port 3000 is already in use
Я проверил монитор ресурсов, и у меня нет других процессов, работающих на порту 3000. Почему я получаю это сообщение об ошибке?
В моем app.js у меня есть следующий код для установки порта ... это неверно? Раньше он работал нормально, поэтому я не уверен, что делаю не так.
// Set Port
app.set('port', (process.env.PORT || 3000));
app.listen(app.get('port'), function() {
console.log('Server started on port '+app.get('port'));
});
Спасибо за помощь!
РЕДАКТИРОВАТЬ:
Я попытался запустить netstat и TCPView, чтобы проверить, какой процесс использует порт, но этот порт ничего не использует. Я также попытался перезагрузить ноутбук, но все равно получаю ту же ошибку.
javascript
node.js
npm
port
user2573690
источник
источник
netstat
в командной строке или подключиться к localhost: 3000 с эквивалентом telnet - например, PuTTY.app.listen()
оператора в вашем приложении для другого,.listen()
который также пытается запустить сервер на этом порту. Первый работает, второй сообщает об ошибке. Найдите в своем коде.listen
.Ответы:
Вы можете поискать, как убить этот процесс.
Для Linux / Mac OS найдите
(sudo) run
это в терминале:В Windows:
изменить
tskill
дляtaskkill
в мерзавца Башисточник
lsof
но с помощьюsudo lsof
чего-то получаю, и убийство этого процесса решило эту проблему.Иногда это случается, как предлагала @sova. Иногда такое случается со мной, когда EADDR используется. Обычно в фоновом режиме скрывается окно терминала, в котором все еще выполняется приложение. И это тоже верно со мной.
Бывает, когда вы давно открыли терминал, да, вы имеете право, вы должны остановить процесс. Но иногда это не останавливалось на заднем плане. Поэтому лучшее решение - закрыть терминал и запустить его снова. Это решит вашу проблему. потому что в моем случае это работает.
Также,
закрыть экземпляр на данный момент, но не может остановить процесс в фоновом режиме. Итак, однажды
работает, но снова, когда мы обновляем наш код и сохраняем, эта проблема возникает снова, как и с Nodemon .
Так что выход из терминала решит проблему. ИЛИ
источник
killall -9 node
я смог запустить сервер локально.Может быть, вы можете принять это как ссылку. Эта единственная командная строка может убить процесс, запущенный на данном порту.
Чтобы убить несколько портов.
источник
Для Windows диспетчер задач определенно покажет запущенный процесс узла. Попробуйте убить процесс, это решит проблему.
источник
У меня такая же проблема. (Следующие шаги отлично работают в Windows 10):
Теперь ты можешь бежать
npm start
.Надеюсь, это поможет тебе.
источник
Я видел то же самое и безуспешно пробовал все предложения выше. Вот шаги, которые решают это для меня: - выключить Wi-Fi - запуск npm (это должно сработать) - включить Wi-Fi
Я не совсем уверен, в чем заключается основная проблема, но это решило ее для меня.
источник
netstat -ano
не перечислил ничего, использующего порт 3000.Я использовал экспресс-сервер с nodemon на NodeJS. Я получил следующее сообщение и похоже на ошибку:
Существует общее решение, заключающееся в том, что если вы прервете все подключения к серверу узлов, вы можете добавить этот код в свой файл package.json:
Кроме того, я нашел несколько решений Windows command и bash на Win 10 x64.
Все мои заметки здесь:
# Завершить все подключения к серверу NodeJS
# Пример: откройте диспетчер задач Windows и посмотрите номер PID "node.exe" в Windows
# Убить процесс в Windows по номеру порта (пример)
За помощью:
Код 1:
Код 2:
Код 3:
# Командная строка для просмотра конкретного порта
в cmd:
в bash:
# Найдите node.exe с помощью команды "tasklist"
в cmd:
в bash:
источник
Убиваем процесс, которому принадлежит порт 3000
Во-первых, давайте посмотрим, как мы можем убить процесс, у которого открыт порт.
Используя команду lsof, мы можем получить PID, имеющий данный порт:
Тогда мы можем убить этот процесс, просто выполнив:
Давайте превратим это в однострочник:
Если вы используете переменную среды для установки порта сервера, мы можем указать это вместо жесткого кодирования наших значений:
Наконец, мы можем по умолчанию использовать порт 3000, если переменная среды не установлена:
Получение nodemon для выполнения хуков
Nodemon позволяет настраивать перехватчики событий через файл конфигурации nodemon.json:
Это заставит nodemon выполнять команду sh -c 'lsof -i:
${PORT:-3000} -t | xargs
kill всякий раз, когда ваше приложение падает, тем самым убивая порожденный им дочерний процесс, который сохраняет порт открытым.или вы можете попробовать это
например:
источник
lsof -i :3000 -t
fuser -k port-number/tcp
Иногда такое случается со мной, когда EADDR используется. Обычно в фоновом режиме скрывается окно терминала, в котором все еще выполняется приложение. Вы можете остановить процесс с помощью ctrl + C в окне терминала.
Или, возможно, вы слушаете порт несколько раз из-за копирования / пасты =)
источник
.listen()
несколько раз?Откройте диспетчер задач (нажмите Ctrl + Alt + Del. Выберите вкладку «Процессы». Найдите «Node.js: серверный JavaScript». Выберите его и нажмите кнопку «Завершить задачу».
источник
Пришел сюда из Google с решением для High Sierra.
Что-то изменилось в сетевых настройках MacOS, и некоторые приложения (включая ping) не могут разрешить localhost.
Редактирование / etc / hosts похоже на исправление:
cmd:
sudo nano /etc/hosts/
content127.0.0.1 localhost
Или просто (если вы уверены, что ваш / etc / hosts пуст)
sudo echo '127.0.0.1 localhost' > /etc/hosts
источник
Я потратил 2 часа на то, чтобы выяснить, почему
EADDRINUSE
мне не разрешили запустить приложение (другие серверы node-express были в порядке) ... оно начало работать после добавленияlazyConnect: true,
в конфигурацию источника данных.Не спрашивайте меня, почему это помогло. Я не знаю. Я помещаю эту информацию здесь только для людей, у которых такая же проблема.
источник
У меня возникла эта проблема при использовании Git Bash в Windows. Я бегу
npm start
, илиnode app.js
. После короткого замыкания с помощью Ctrl + C и попытки снова запустить сервер с помощьюnpm start
илиnode app.js
я получаю это сообщение об ошибке.Однако, когда я делаю это с помощью обычной командной строки Windows , она работает нормально.
Или можно сделать по-другому. Откройте диспетчер задач и найдите строку « Node.js: серверный JavaScript ». Выберите это и завершите задачу . Теперь он должен работать.
Спасибо.
источник
Если вы хотите закрыть только один порт, просто запустите эту команду.
kill -9 $(lsof -t -i:3000)
Разница между
pkill
иkill
заключается в обработке глины. В kill вы применяете фильтр. вы просто останавливаете нужный порт.Команда
pkill
закрывает все процессы узла.pkill -9 node
Используйте pkill, чтобы избежать утечек памяти, которые иногда возникают во время разработки. если имеется более одного узла, он убивает их всех.
Также показано использование скриптов в package.json .
источник
Попробуйте открыть локальный хост в своем браузере. Просто введите:
localhost:3000
в адресной строке.Если приложение открывается, это означает, что ваше предыдущее
npm run
все еще активно. Теперь вы можете просто внести изменения в код и увидеть эффекты, если вы разрабатываете одно и то же приложение, или если вы хотите запустить другое приложение, просто немного измените код (в index.js ранее запущенного приложения) и ( возможно, обновите вкладку браузера), чтобы он вылетел;) ..... Теперьnpm run start
снова запустите из вашего нового каталога приложений. Надеюсь это поможет! :)или
Вы можете открыть диспетчер задач (WINDOWS_KEY + X> Диспетчер задач), и вы увидите строку «Node.js: серверный JavaScript». Выберите это и завершите задачу .... Теперь она должна работать !!
Если нет, измените
.env
файл своего приложения, чтобы включитьport:3002
и запустить новое приложение. Это позволит вам запускать два отдельных приложения на разных портах. Ура !!источник
Надеюсь, это поможет
источник
Просто в Linux
источник
Я тоже столкнулся с той же проблемой. Лучший способ решить (для окон) :
Зайдите в диспетчер задач .
Прокрутите и найдите процесс задачи с именем. Node.js: серверный JavaScript
Завершите эту конкретную задачу.
Вот так! Теперь выполните npm start, и он будет работать как раньше!
источник
Для пользователей Windows вы можете использовать инструмент CurrPorts , чтобы легко убить используемые порты.
источник
Это может быть процесс администратора, работающий в фоновом режиме и
netstat
не показывающий этого.Используйте,
tasklist | grep node
чтобы найти PID этого административного процесса, а затемkill PID
источник
если вы используете webstorm, просто убедитесь, что ваш порт по умолчанию не равен 3000 из файла -> настройки -> Сборка, выполнение, развертывание -> Отладчик И там изменение
и установите его на "63342" или посмотрите этот ответ. Изменить порт WebStorm LiveEdit (63342)
источник
В скриптах package.json есть:
Я считаю, что проблема заключалась в том, что старый порт не выключался вовремя с помощью nodemon для перезапуска. У меня возникла проблема с использованием Multer.
источник
методы listen () сервера или приложения могут быть добавлены в двух местах. Найдите методы listen () в запускаемых приложениях, поэтому он возвращается в качестве сервера, запущенного на порте XXXX, а порт XXXX уже используется, сообщение приходит бок о бок
источник
В моих обстоятельствах я только начал использовать VS Code и следовал руководству по Sequelize. В конце концов, у меня был файл bin / www, в котором был listen (). Я не знал об этом, и я запускал свое приложение, запустив node app.js, когда он не работал, я добавил в экспресс-сервер материал с помощью .listen () (который работал нормально).
Но когда начинал использовать nodemon и VSCode, он указывал на bin / www, и для этого требовался мой app.js.
Короче говоря, я добавил .listen () в свой app.js и запускал app.js напрямую, хотя мне не следовало его добавлять и запускать bin / www.
источник
В ubuntu сначала возьмите процесс, используя номер порта: sudo lsof -i: 3000, затем используйте команду kill, чтобы убить процесс, например, если PID процесса равен 4493, используйте команду: kill 4493 , для Mac или Windows найдите соответствующую команду
источник
Я решил эту проблему, потому что MongoDB или другое приложение, которое вы запускали раньше на этом порту, чтобы решить эту проблему, убейте процесс из диспетчера задач или просто измените номер порта с 3000 на любой другой.
источник
Все очень просто. Вы можете исправить это за 2 простых шага.
Оказывается, эту переменную использует какая-то другая программа. Обычно, когда вы запускаете сценарий реакции, он будет искать переменную среды с таким названием PORT.
источник
Перед запуском nodemon сначала запустите mongod. Вы никогда не получите эту ошибку. :)
источник
проверьте, работает ли какой-либо процесс на том же порту, введя команду:
Вы можете найти процесс, запущенный на соответствующем порту узла, а затем убить узел с помощью
Если проблема не исчезла, просто убейте все ноды.
источник
Убивает все запущенные порты (mac):
источник