как остановить сервер node js
Чтобы остановить сервер Node.js, необходимо нажать «Ctrl + C» в терминале, в котором запущен сервер. Ниже приведен пример:
[process был прерван]
Видим, что в терминале появилось сообщение, процесс был прерван. Теперь сервер Node.js остановлен и не будет прослушивать соединения.
Также, есть возможность удаленного управления процессами на Node.js. Одним из таких решений является pm2 process manager.
Как автоматически перезапускать приложения Node.js с помощью nodemon
В Node.js для вступления изменений в силу необходимо перезапустить процесс. Это добавляет в рабочий процесс дополнительный шаг, необходимый для внесения изменений. Вы можете устранить этот дополнительный шаг, используя nodemon для автоматического перезапуска процесса.
nodemon — это утилита командной строки, разработанная @rem. Она заключает в оболочку ваше приложение Node, наблюдает за файловой системой и автоматически перезапускает процесс.
Из этой статьи вы узнаете об установке и настройке nodemon .
Предварительные требования
Если вы захотите следовать за этой статьей, вам потребуется следующее:
- Локальная установка Node.js, выполненная согласно указаниям учебного модуля Установка Node.js и создание локальной среды разработки.
Шаг 1 — Установка nodemon
Вначале вам нужно будет установить nodemon на вашем компьютере. Установите утилиту в проекте глобально или локально, используя npm или Yarn:
Глобальная установка
Вы можете установить nodemon глобально с помощью npm :
Или с помощью Yarn:
Локальная установка
Также вы можете установить nodemon локально с помощью npm. При локальной установке мы можем установить nodemon как зависимость dev с помощью —save-dev (или —dev ):
Или с помощью Yarn:
При локальной установке нужно знать, сможете ли вы использовать команду nodemon напрямую из командной строки:
Однако вы также можете использовать его как часть некоторых скриптов npm или с npx.
На этом процесс установки nodemon завершен. Далее мы будем использовать nodemon с нашими проектами.
Шаг 2 — Настройка образца проекта Example Express с помощью nodemon
Мы можем использовать nodemon для запуска скрипта Node. Например, если у нас имеется настройка сервера Express в файле server.js , мы можем запустить его и наблюдать за изменениями следующим образом:
Вы можете передавать аргументы точно так же, как если бы запускали скрипт с помощью Node:
Процесс перезапускается каждый раз, когда вы вносите изменение в файл с одним из отслеживаемых по умолчанию расширений ( .js , .mjs , .json , .coffee или .litcoffee ) в текущем каталоге или подкаталоге.
Допустим мы записываем образец файла server.js , который выводит сообщение: Dolphin app listening on port $! .
Мы можем запустить пример с помощью nodemon :
Мы видим следующий вывод на терминале:
Output[nodemon] 1.17.3 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node server.js` Dolphin app listening on port 3000!
Пока nodemon еще работает, внесем изменение в файл server.js для вывода сообщения: Shark app listening on port $! .
Мы увидим следующий дополнительный вывод на терминале:
Output[nodemon] restarting due to changes. [nodemon] starting `node server.js` Shark app listening on port 3000!
Вывод приложения Node.js на терминале отображается, как и ожидалось. Вы можете перезапустить процесс в любое время, набрав rs и нажав ENTER .
Также nodemon будет искать файл main , заданный в файле package.json вашего проекта:
package.json
// . "main": "server.js", // . >
Или скрипт start :
package.json
// . "scripts": "start": "node server.js" >, // . >
После внесения изменений в package.json вы сможете вызывать nodemon для запуска образца приложения в режиме наблюдения без его передачи в server.js .
Шаг 3 — Использование опций
Вы можете изменить параметры конфигурации, доступные nodemon .
Рассмотрим несколько основных опций:
- —exec : используйте оператор —exec , чтобы задать двоичный код для выполнения файла. Например, в сочетании с двоичным кодом ts-node оператор —exec может быть полезен для наблюдения за изменениями и запуска файлов TypeScript.
- —ext : задает различные расширения файлов для наблюдения. Для этого оператора требуется указать разделенный запятыми список расширений файлов (например, —ext js,ts ).
- —delay : по умолчанию nodemon ожидает одну секунду для перезапуска процесса после изменения файла, однако с помощью оператора —delay вы можете указать другое время задержки. Например, nodemon —delay 3.2 для задержки 3,2 секунды.
- —watch : используйте оператор —watch , чтобы задать несколько каталогов или файлов для наблюдения. Добавляйте один оператор —watch для каждого каталога, за которым вы хотите наблюдать. По умолчанию вы наблюдаете за текущим каталогом и его подкаталогами, а с помощью —watch вы можете сузить область наблюдения до нескольких отдельных подкаталогов или файлов.
- —ignore : используйте оператор —ignore , чтобы игнорировать определенные файлы, шаблоны файлов или каталоги.
- —verbose : более развернутый вывод с информацией о том, какие файлы изменились, для активации перезапуска.
Вы можете просмотреть все доступные опции с помощью следующей команды:
Используя эти опции, создадим команду для соответствия следующему сценарию:
- наблюдение за каталогом server
- указание файлов с расширением .ts
- игнорирование файлов с суффиксом .test.ts
- выполнение файла ( server/server.ts ) с ts-node
- ожидание перезапуска в течение трех секунд после изменения файла
Эта команда комбинирует опции —watch , —ext , —exec , —ignore и —delay , чтобы выполнить условия для нашего сценария.
Шаг 4 — Использование конфигураций
В предыдущем примере добавление параметров конфигурации при выполнении nodemon может оказаться довольно затруднительным. Лучшее решение для проектов, требующих определенных конфигураций, — задать эти конфигурации в файле nodemon.json .
Например, здесь приведены те же конфигурации, что и в предыдущем примере командной строки, но они содержатся в файле nodemon.json :
nodemon.json
"watch": ["server"], "ext": "ts", "ignore": ["*.test.ts"], "delay": "3", "execMap": "ts": "ts-node" > >
Обратите внимание, что execMap используется вместо оператора —exec . execMap позволяет задавать двоичный код, который следует использовать для определенных расширений файлов.
Если вы предпочитаете не добавлять в проект файл конфигурации nodemon.json , вы можете добавить эти конфигурации в файл package.json в ключ nodemonConfig :
package.json
"name": "test-nodemon", "version": "1.0.0", "description": "", "nodemonConfig": "watch": [ "server" ], "ext": "ts", "ignore": [ "*.test.ts" ], "delay": "3", "execMap": "ts": "ts-node" > >, // .
Когда вы внесете изменения в nodemon.json или package.json , вы сможете запускать nodemon с помощью желаемого скрипта:
nodemon подбирает конфигурации и использует их. Это позволяет сохранять конфигурации, делиться ими и воспроизводить их, чтобы избежать ошибок при копировании и вставке или ошибок ввода в командной строке.
Заключение
В этой статье мы рассмотрели использование nodemon с приложениями Node.js. Этот инструмент поможет автоматизировать процесс остановки и запуска сервера Node для просмотра изменений.
Дополнительную информацию о доступных характеристиках и ошибках при диагностике и устранении неисправностей можно найти в официальной документации.
Если вы хотите узнать больше о Node.js, на странице темы Node.js вы найдете упражнения и проекты программирования.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Как остановить npm?
Я запускаю сайт на node.js на vds хостинге с помощью npm start server.js . Все работает, консоль выводит логи, другие могут заходить по ip. Если нужно перезапустить node, приходится перезагружать весь сервер и заново запускать node. У себя на компе (на windows) я просто закрывал консоль. Как реализовать остановку и рестарт node из консоли для хостинга?
Отслеживать
11.9k 5 5 золотых знаков 28 28 серебряных знаков 40 40 бронзовых знаков
задан 17 янв 2018 в 12:59
Данис Хамидуллин Данис Хамидуллин
67 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
Ну, если вы орудуете через putty, то проще всего поставить утилиту screen и работать в ней. По моему чтобы завершить процесс, нужно всего лишь выполнить команду ctrl+c.
17 янв 2018 в 13:03
Возможный дубликат вопроса: Как сделать, чтобы nodeJs сервер работал без активированной консоли?
17 янв 2018 в 15:00
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Используй сочетание кнопок CTRL + C чтобы остановить. И научись пользоваться screen, я скинул тебе мануал как работать с ним в CentOS, но для других ОС тоже есть и использование аналогично, установка немного различна, но суть почти одна и та же.
Создай файл run.sh и запускай через него, будет в будущем удобно, особенно когда нормально разберешься.
#Путь до проекта cd /www/test.com/ #Запуск проекта, Test - название процесса screen -S Test npm run start
Скрипт можешь добавить в автозагрузку, тогда сервер будет стартовать сразу же после включения
В packege.json укажи
"scripts": < "start": "node start server.js" >,
Если ты во время разработки постоянно перезапускаешь сервер, то можешь воспользоваться nodemon, он следит за файлами и если, что-то изменилось, то перезапускается
Node.JS для решения задач
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
В этом разделе предлагаются задачи по теме AJAX.
Конечно же, они требуют взаимодействия с сервером. Мы будем использовать серверную часть, написанную на JavaScript, на Node.JS.
Если вы не использовали Node.JS ранее – не беспокойтесь. Здесь нашей целью является преимущественно клиентская часть, поэтому прямо сейчас изучать Node.JS не обязательно. Серверные скрипты уже готовы. Нужно только поставить Node.JS и модули, чтобы их запускать.
Установка
Для настройки окружения будет достаточно сделать два шага:
- Сначала установите сам сервер Node.JS. Если у вас Unix-система – рекомендуется собрать последнюю версию из исходников, а также NPM. Вы справитесь. Если Windows – посетите сайт https://nodejs.org или скачайте установщик (32 или 64-битный) с расширением .msi из https://nodejs.org/dist/latest/.
- Выберите директорию, в которой будете решать задачи. Запустите в ней:
npm install node-static
Проверка
-
Создайте какую-нибудь поддиректорию и в ней файл server.js с таким содержимым:
var http = require('http'); var static = require('node-static'); var file = new static.Server('.'); http.createServer(function(req, res) < file.serve(req, res); >).listen(8080); console.log('Server running on port 8080');
Server running on port 8080
Нельзя запустить больше одного сервера одновременно!
При попытке запуска двух серверов (например, в разных консолях) – будет конфликт портов и ошибка.
- Откройте в браузере http://127.0.0.1:8080/server.js. Должно вывести код файла server.js .
Если всё работает – отлично, теперь вы готовы решать задачи.
Примеры
В примерах, за редким исключением, для краткости будет приводиться не полный скрипт на Node.JS, а только код обработки запроса.
var http = require('http'); var url = require('url'); var querystring = require('querystring'); function accept(req, res) < res.writeHead(200, < 'Content-Type': 'text/plain', 'Cache-Control': 'no-cache' >); res.end("OK"); > http.createServer(accept).listen(8080);
…Будет только функция accept , или даже только её содержимое:
res.writeHead(200, < 'Content-Type': 'text/plain', 'Cache-Control': 'no-cache' >);
Основные методы
В функции accept используются два объекта:
- req – объект запроса («request»), то есть то, что прислал клиент (обычно браузер), из него читаем данные.
- res – объект ответа («response»), в него пишем данные в ответ клиенту.
- вызов res.writeHead(HTTP-код, [строка статуса], ) пишет заголовки.
- вызов res.write(txt) пишет текст в ответ.
- вызов res.end(txt) – завершает запрос ответом.
Демо
Кроме просмотра кода, можно будет попробовать и скачать различные демки.
Вот пример демо, можете попробовать нажать на кнопку – она работает.
Если хотите посмотреть пример поближе и поиграть с ним – скачайте архив (кнопка справа-сверху в примере выше), он будет работать и на вашем Node.JS.
Больше о Node.JS
Больше о сервере Node.JS можно узнать в скринкасте по Node.JS.