Закрытие нескольких портов с помощью приложения Express

#node.js #express

#node.js #экспресс

Вопрос:

Я запускаю несколько серверных экземпляров приложения на разных портах, используя «npm run node_1 amp; npm run node_2 amp;», это успешно запускает мой localhost на 3001 и 3002. Но когда я пытаюсь закрыть его с помощью CTRL C, он закрывает только первый определенный порт, а другой все еще остается в использовании, выдавая ошибку ниже, когда я запускаю его снова

[nodemon] запуск node ./networkNode.js 3002 http://localhost:3002 событий.js:173 выдает ошибку; // Необработанное событие ‘error’ ^

Ошибка: прослушивание EADDRINUSE: адрес уже используется :::3002

 My package.json :

"scripts": {
    "node_1": "nodemon --watch . -e js ./networkNode.js 3001 
           http://localhost:3001",
    "node_2": "nodemon --watch . -e js ./networkNode.js 3002 
           http://localhost:3002",
  },

  

Ответ №1:

amp; Команда after a запускает ее как фоновое задание. Для управления ими доступно несколько команд, которые подробно описаны здесь

Что может быть проще, так это использовать пакет NPM concurrently для запуска этих процессов вместо этого. Поскольку уничтожение concurrently с Ctrl C приведет к уничтожению всех заданий, которые оно запустило.

Комментарии:

1. у меня одновременно сработало, спасибо за ответ 🙂

Ответ №2:

При попытке запустить несколько процессов с помощью amp; только 1 процесс подключается к терминалу AFAIK, и когда вы нажимаете ctrl c, только подключенный процесс получает событие SIGINT signal. Вам больше повезло бы запустить эти процессы с помощью диспетчера процессов, такого как pm2, или, если вы не хотите ничего сложного, используйте пакет run-all.