Npm start как остановить

Npm start как остановить

Вы создаете приложение node.js с помощью express v4.x, затем запустите свое приложение с помощью npm start . Мой вопрос: как остановить приложение? Есть ли npm stop ?

EDIT включить ошибку при реализации npm stop

Да, npm также предусматривает остановку script:

npm help npm-scripts

prestop, stop, poststop: выполняется командой npm stop.

Установите один из указанных выше в package.json, а затем используйте npm stop

npm help npm-stop

Вы можете сделать это очень простым, если вы установите в app.js ,

И, затем в scripts.json,

Тем не менее, если бы это был я, я использовал бы pm2 или что-то, что автоматически обрабатывалось на основе нажатия git.

Все остальные решения здесь зависят от ОС. Независимое решение для любой ОС использует 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 всегда завершает все запущенные процессы, но это нормально для меня.

Читайте также:  Ati radeon 5870 цена

Здесь другое решение, которое смешивает идеи из предыдущих ответов. Он принимает подход "процесс уничтожения", обращаясь к проблеме независимости платформы.

Он полагается на пакет tree-kill для обработки уничтожения дерева процессов сервера. Я обнаружил, что уничтожил все дерево процессов, необходимое в моих проектах, потому что некоторые инструменты (например, babel-node ) порождают дочерние процессы. Если вам нужно только убить один процесс, вы можете заменить tree-kill на встроенный метод process.kill() .

Решение следует (первые два аргумента spawn() должны быть изменены, чтобы отразить конкретный рецепт для запуска вашего сервера):

npm start (для запуска вашего сервера, как обычно)

npm stop (это остановит ваш текущий сервер)

Вышеприведенный код не был протестирован (это сокращенная версия моего кода, мой код действительно работает), но, надеюсь, он работает так, как есть. В любом случае, это обеспечивает общее направление, если вы хотите использовать socket.io, чтобы остановить ваш сервер.

4 плюса

676 Репутация автора

Вот еще одно решение, которое смешивает идеи с предыдущими ответами. Он принимает подход «процесс уничтожения» при решении проблемы независимости платформы.

Он полагается на пакет tree-kill , чтобы обрабатывать уничтожение дерева процессов сервера. Я обнаружил, что для всех проектов, необходимых в моих проектах, было убито, потому что некоторые инструменты (например babel-node ) порождают дочерние процессы. Если вам нужно только убить один процесс, вы можете заменить tree-kill встроенным process.kill() методом.

Решение следует (первые два аргумента spawn() должны быть изменены, чтобы отразить конкретный рецепт для запуска вашего сервера):

Обратите внимание, что это решение отделяет скрипт запуска от сервера (т.е. npm start будет немедленно возвращаться и не блокироваться до тех пор, пока сервер не будет остановлен). Если вы предпочитаете традиционное поведение блокировки, просто удалите options.detached аргумент spawn() и вызов child.unref() .

Читайте также:  Md235zp прошивка китайский iphone

6 плюса

1064 Репутация автора

Проверить с netstat -nptl все процессы

И это просто убивает процесс ссылкой PID . В моем случае я хочу остановить 6231 / nodejs, поэтому я выполняю следующую команду:

2 плюса

21 Репутация автора

Если это очень просто, просто запустите процесс.

2 плюса

59 Репутация автора

Это проблема с монетной версией, альтернативно использующая cmd. Чтобы убить серверный процесс, просто запустите эту команду:

плюса

463 Репутация автора

В MAC OS X (/ BSD): вы можете попробовать использовать команду lsof (список открытых файлов)

Я запускаю сайт на node.js на vds хостинге с помощью npm start server.js . Все работает, консоль выводит логи, другие могут заходить по ip.

Если нужно перезапустить node, приходится перезагружать весь сервер и заново запускать node. У себя на компе (на windows) я просто закрывал консоль.

Как реализовать остановку и рестарт node из консоли для хостинга?

2 ответа 2

Используй сочетание кнопок CTRL + C чтобы остановить. И научись пользоваться screen, я скинул тебе мануал как работать с ним в CentOS, но для других ОС тоже есть и использование аналогично, установка немного различна, но суть почти одна и та же.

Создай файл run.sh и запускай через него, будет в будущем удобно, особенно когда нормально разберешься.

Скрипт можешь добавить в автозагрузку, тогда сервер будет стартовать сразу же после включения

В packege.json укажи

Если ты во время разработки постоянно перезапускаешь сервер, то можешь воспользоваться nodemon, он следит за файлами и если, что-то изменилось, то перезапускается

Ссылка на основную публикацию
Mysql вывести последнюю запись
Это пример кода для выбора всех записей из таблицы. Может ли кто-нибудь показать мне, как выбрать последнюю запись этой таблицы?...
M3u8 чем открыть на андроид
вкл. 13 Август 2018 . Опубликовано в Менеджеры закачек M3U8 Loader - Программа скачает видео в несколько потоков. Для того...
M2040dn печатает белые листы
Сделаем качество печати Kyocera как по заводу В блоге я уже неоднократно говорил о своей любви к печатным аппаратам японской...
Mysql query error select distinct
I keep running into the same error, using MySQL. The totaal value is marked as wrong, but i have no...
Adblock detector