Как остановить приложение, в котором node.js выражает 'npm start'
Вы создаете приложение node.js с помощью express v4.x, а затем запускаете приложение с помощью npm start . У меня вопрос, как остановить приложение? Есть ли остановка npm ?
ИЗМЕНИТЬ, чтобы включить ошибку при реализации npm stop
Да, в npm также есть сценарий остановки:
npm help npm-scripts
prestop, stop, poststop: запускается командой npm stop.
Установите одно из вышеперечисленных в свой package.json, а затем используйте npm stop
npm help npm-stop
Вы можете сделать это действительно просто, если настроитесь app.js ,
Затем в scripts.json
Тем не менее, если бы это был я, я бы использовал pm2 или что-то, что автоматически обрабатывало бы это на основе git push.
Все остальные решения здесь зависят от ОС. Самостоятельное решение для любой ОС использует 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 ), и там говорится
В Linux и OS X он ограничен размером двоичного имени плюс длиной аргументов командной строки, поскольку он перезаписывает память argv.
Мое приложение не использует аргументов, поэтому я могу добавить эту строку кода в свой 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() должны быть изменены, чтобы отразить конкретный рецепт запуска вашего сервера):
Как остановить приложение этого узла.JS express ‘npm start’
вы создаете узел.js приложение с express v4.x затем запустите приложение с помощью npm start. Мой вопрос в том, как остановить приложение? Есть ли НПМ остановки?
редактировать включить ошибку при реализации НПМ остановки
7 ответов
да, npm также предоставляет сценарий остановки:
npm help npm-scripts
prestop, stop, poststop: запуск по команде npm stop.
установите одно из вышеуказанного в вашем пакете.json, а затем используйте npm stop
npm help npm-stop
вы можете сделать это очень просто, если вы установили в app.js ,
все остальные решения здесь зависят от ОС. Независимое решение для любой ОС использует сокет.Ио следующим образом.
package.json есть два скрипта:
сервер.js-ваш обычный экспресс-материал живет здесь
сервер.остановка.js
когда я попробовал предлагаемое решение, я понял, что мое имя приложения было усечено. Я читал на process.title в документации nodejs (https://nodejs.org/docs/latest/api/process.html#process_process_title) и он говорит
в Linux и OS X он ограничен размером двоичного имени плюс длиной аргументов командной строки, поскольку он перезаписывает память argv.
мое приложение не использует никаких аргументов, поэтому я могу добавить эта строка кода для my app.js
а затем добавьте эти несколько строк в my
использовать действительно длинные имена процессов. npm start и npm stop работа, конечно npm stop всегда будет завершить все запущенные процессы, но это нормально для меня.
чека с netstat-nptl все процессы
и он просто убивает процесс ссылкой PID. В моем случае я хочу остановить 6231 / nodejs, поэтому я выполняю следующую команду:
вот еще одно решение, которое сочетает идеи из предыдущих ответов. Он использует подход «убить процесс» при решении проблемы независимости платформы.
он полагается на дерево-убить пакет для обработки убийства дерева процессов сервера. Я нашел, что убийство всего дерева процессов необходимо в моих проектах, потому что некоторые инструменты (например, babel-node ) порождают дочерние процессы. Если вам нужно убить только один процесс, вы можете заменить tree-kill на встроенный process.kill() метод.
решение следует (первые два аргумента в spawn() следует изменить, чтобы отразить конкретный рецепт для запуска вашего сервера):
npm-stop
This runs a predefined command specified in the "stop" property of a package's "scripts" object.
Unlike with npm start, there is no default script that will run if the "stop" property is not defined.
- Default: false
- Type: Boolean
If true, npm does not run scripts specified in package.json files.
Note that commands explicitly intended to run a particular script, such as npm start , npm stop , npm restart , npm test , and npm run-script will still run their intended script if ignore-scripts is set, but they will not run any pre- or post-scripts.
- Default: '/bin/sh' on POSIX systems, 'cmd.exe' on Windows
- Type: null or String
The shell to use for scripts run with the npm exec , npm run and npm init <pkg> commands.