Вы создаете приложение node.js с помощью express v4.x, а затем запускаете приложение с помощью npm start . У меня вопрос, как остановить приложение? Есть ли остановка npm ?
ИЗМЕНИТЬ, чтобы включить ошибку при реализации npm stop
/home/nodetest2# npm stop
> nodetest2@0.0.1 stop /home/nodetest2
> pkill -s SIGINT nodetest2
pkill: invalid argument for option 's' -- SIGINT
npm ERR! nodetest2@0.0.1 stop: `pkill -s SIGINT nodetest2`
npm ERR! Exit status 2
--signal
. Используйте,man pkill
чтобы прочитать о pkill.Все остальные решения здесь зависят от ОС. Самостоятельное решение для любой ОС использует socket.io следующим образом.
package.json
имеет два скрипта:server.js - здесь живут ваши обычные экспресс-материалы
server.stop.js
Проверить это
npm start
(чтобы запустить свой сервер как обычно)npm stop
(это остановит ваш работающий сервер)Приведенный выше код не был протестирован (это урезанная версия моего кода, мой код действительно работает), но, надеюсь, он работает как есть. В любом случае, он дает общее направление, если вы хотите использовать socket.io для остановки вашего сервера.
источник
Когда я попробовал предложенное решение, я понял, что имя моего приложения было усечено. Я прочитал
process.title
в документации nodejs ( https://nodejs.org/docs/latest/api/process.html#process_process_title ), и там говоритсяМое приложение не использует аргументов, поэтому я могу добавить эту строку кода в свой
app.js
а затем добавьте эти несколько строк в мой
package.json
файлиспользовать действительно длинные имена процессов.
npm start
иnpm stop
работа, конечноnpm stop
, всегда завершает все запущенные процессы, но для меня это нормально.источник
Это проблема версии mintty или используйте cmd. Чтобы убить процесс сервера, просто выполните эту команду:
источник
В MAC OS X (/ BSD): вы можете попробовать использовать команду lsof (список открытых файлов)
так что
источник
Проверьте с помощью netstat -nptl все процессы
И он просто убивает процесс по ссылке PID .... В моем случае я хочу остановить 6231 / nodejs, поэтому я выполняю следующую команду:
источник
Вот еще одно решение, в котором смешаны идеи из предыдущих ответов. Он использует подход «процесса уничтожения», решая проблему независимости платформы.
Он полагается на пакет tree-kill для обработки уничтожения дерева процессов сервера. Я обнаружил, что в моих проектах необходимо уничтожить все дерево процессов, потому что некоторые инструменты (например
babel-node
) порождают дочерние процессы. Если вам нужно убить только один процесс, вы можете заменить tree-kill на встроенныйprocess.kill()
метод.Далее следует решение (первые два аргумента
spawn()
должны быть изменены, чтобы отразить конкретный рецепт запуска вашего сервера):сборка / start-server.js
сборка / стоп-server.js
package.json
Обратите внимание, что это решение отсоединяет сценарий запуска от сервера (т.е.
npm start
возвращается немедленно и не блокируется, пока сервер не будет остановлен). Если вы предпочитаете традиционное поведение блокировки, просто удалитеoptions.detached
аргументspawn()
и вызовchild.unref()
.источник
Если вы уже пробовали,
ctrl + c
но по-прежнему не работает, вы можете попробовать это. Это сработало для меня.Запустите командную строку от имени администратора. Затем выполните команду ниже, чтобы найти идентификатор процесса (PID), который вы хотите убить. Введите номер вашего порта в
<yourPortNumber>
netstat -ano | findstr :<yourPortNumber>
Затем вы выполняете эту команду после того, как определили PID.
taskkill /PID <typeYourPIDhere> /F
Престижность @mit $ ingh с http://www.callstack.in/tech/blog/windows-kill-process-by-port-number-157
источник
Если очень просто, просто убейте процесс ..
источник
Для машины с Windows (я использую Windows 10), если команда CTRL + C (Отмена / Прервать) на cli не работает, и экран выглядит следующим образом:
Попробуйте сначала нажать ENTER (или подойдет любая клавиша), а затем CTRL + C, и текущий процесс спросит, хотите ли вы прервать пакетное задание:
Возможно, CTRL + C завершает только родительский процесс, в то время как npm start выполняется с другими дочерними процессами. Совершенно не уверен, почему вам нужно нажимать эту дополнительную клавишу, хотя до CTRL + C, но это работает лучше, чем закрывать командную строку и начинать заново.
Связанная проблема, которую вы можете проверить: https://github.com/mysticatea/npm-run-all/issues/74
источник
Для производственных сред вам следует использовать Forever.js
Он настолько полезен для запуска и остановки процесса узла, что вы также можете перечислить запущенные приложения.
https://github.com/foreverjs/forever
источник
Вы можете использовать pm2
https://pm2.keymetrics.io/docs/usage/quick-start/
после установки просто введите терминал
pm2 start app.js
а потомpm2 stop 0
чтобы остановить ваш серверисточник
Если в вашем json-файле нет сценария для остановки приложения, я использую вариант, который просто нажимаю ctrl + C в cmd.
источник
Все (3) солоция:
1- ctlr + C
2- в json файле напишите скрипт, который останавливает
"scripts": {"stop": "killall -SIGINT this-name-can-be-as-long-as-it-need-to-be"},
* чем в команде write // npm stop //
3- Перезагрузите компьютер
источник
Вам нужно нажать комбинацию ctrl + z Моя ОС - это Ubuntu
источник