Как запустить nodemon на windows

Обновлено: 02.07.2024

В Node.js нужно перезапускать процесс, чтобы обновления вступили в силу – а это дополнительный шаг в разработке. К счастью, его можно автоматизировать с помощью nodemon.

В этом мануале вы научитесь устанавливать и настраивать nodemon.

Требования

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

Примечание: Больше мануалов по работе с Node.js вы найдете здесь.

1: Установка nodemon

Для начала нам нужно установить утилиту nodemon на свой компьютер. Установите ее глобально или локально с помощью npm или Yarn.

Глобальная установка nodemon

Чтобы установить nodemon глобально с помощью npm, введите:

npm install nodemon -g

Чтобы сделать это с помощью Yarn, введите:

yarn global add nodemon

Локальная установка nodemon

npm install nodemon --save-dev

Это можно сделать и с помощью Yarn:

yarn add nodemon --dev

Устанавливая nodemon локально, вы должны понимать, что не сможете использовать ее из командной строки.

command not found: nodemon

Однако вы сможете использовать утилиту как часть скриптов npm или запускать ее с помощью npx.

2: Создание простого проекта Express с помощью nodemon

Утилиту nodemon можно использовать для запуска скрипта Node. Например, если в файле server.js у вас есть конфигурация сервера Express, мы можем запустить его и проследить за изменениями с помощью команды:

Вы можете передавать команде аргументы (они передаются так же, как скриптам, запущенным с помощью Node):

nodemon server.js 3006

Каждый раз, когда вы вносите изменения в файл с одним из наблюдаемых по умолчанию расширений (это файлы .js, .mjs, .json, .coffee и .litcoffee) в текущем каталоге или подкаталоге, процесс перезапускается.

Dolphin app listening on port $!

Мы можем запустить его с помощью утилиты nodemon:

И мы увидим следующий вывод в терминале:

[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!

Shark app listening on port $!

Мы получим дополнительный вывод:

[nodemon] restarting due to changes.
[nodemon] starting `node server.js`
Shark app listening on port 3000!

Вывод приложения Node.js отображается должным образом. Вы можете перезапустить процесс в любое время, набрав rs и нажав Enter.

Также nodemon будет искать файл main, указанный в файле package.json вашего проекта:

Или скрипт start:

После внесения изменений в package.json вы можете вызвать nodemon, чтобы запустить пример приложения в режиме просмотра без необходимости передавать server.js.

3: Параметры nodemon

Вы можете изменить параметры конфигурации nodemon.

Давайте рассмотрим несколько основных опций:

Вы можете просмотреть все доступные параметры с помощью следующей команды:

Давайте с помощью этих параметров создадим команду, которая:

  • Отслеживает каталог server
  • Задает файлы с расширением .ts
  • Игнорирует файлы с суффиксом .test.ts
  • Выполняет файл (server/server.ts) с помощью ts-node
  • Ожидает перезапуска в течение трех секунд после изменения файла

nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts

4: Конфигурация nodemon

Например, вот те же конфигурации, что и в предыдущей команде – только теперь они помещены в файл nodemon.json:

Если вы не хотите добавлять конфигурационный файл nodemon.json в свой проект, вы можете добавить эти конфигурации в файл package.json с помощью ключа nodemonConfig:

После внесения изменений в nodemon.json или package.json вы можете запустить утилиту nodemon с необходимым скриптом:

nodemon подберет конфигурации из файла и использует их. Таким образом, ваши конфигурации можно сохранять, публиковать и повторять, чтобы избежать ошибок и необходимости вручную вводить опции (или постоянно копировать и вставлять их).

Заключение

Теперь вы знаете, как использовать nodemon с вашими приложениями Node.js. Этот инструмент помогает автоматизировать процесс остановки и запуска сервера Node.

За дополнительной информацией о доступных функциях и устранении ошибок обратитесь к официальной документации.

Привет! Рассмотрим установку Node.js на Windows 7 и протестируем его работу.

При попытке установить последнюю версию Node.js на Windows 7, в моем случае v14.15.4 LTS (ссылка), возникает ошибка о том, что приложение поддерживается на Windows 8.1. и выше:

Node.js на Windows 7

Ошибка при установке Node.js на Windows 7

Решение


Node.js v13.14.0

2. Скачиваем версию для вашей операционной системы (у меня ссылка на v13.14.0-x64.msi). Открываем этот файл для установки:


3. В открывшемся окошке подтверждаем свою готовность к установке нажатием кнопки Next:


4. Соглашаемся с условиями лицензионного соглашения, ставим галочку и нажимаем Next:


5. По умолчанию, установка Node.js происходит в папку C: \Program Files\nodejs\ на Вашем компьютере. Поменяйте, при необходимости, и нажимайте Next:




Мои поздравления 🙂 Node.js установлен.

Проверка работы Node.js и npm

Осталось проверить работу Node.js, для этого:

1. Через Пуск открываем стандартную программу Windows Выполнить , если не нашли Командную строку:


1.1. Командой cmd открываем консоль:



3. Дальше командой npm -v проверяем наличие npm. Видим версию, в моем случае 6.14.4




После этого в Web Platform Installer появится закладка Zoo:


Установка Node.js

На вкладке Zoo —> Engines есть список всех доступных веб движков, среди них и Node.js. Однако мы рекомендуем устанавливать пакет Node.js в который кроме самой ноды входит еще несколько полезных модулей, так что Zoo —> Packages —> Node.js Hosting Package и нажимаем Add, Install.


Увидеть все доступные на данный момент веб фреймворки и приложения можно в галлерее Helicon Zoo. После того, как вы согласитесь с лицензионными соглашениями, начнётся загрузка и установка IIS (если ещё не установлен), Helicon Zoo Module, а также самого node.exe для Windows.

Важным компонентом системы является менеджер пакетов Node Package Manager (npm), который понадобится вам для установки дополнительных модулей. К сожалению текущая версия npm на Windows работает нестабильно. Зато есть его аналог — утилита ryppi.py, которая может быть использована так же как npm. ryppi.py написан на языке Python, так что установка Node.js Hosting Package потянет за собой и питон. В будущем, если npm будет стабильно работать на Windows, мы заменим им ryppi.py, что позволит сэкономить 80мб дискового пространства на установке питона.

Установка шаблонов WebMatrix

Итак, мы установили Node.js, теперь чтобы начать писать под него приложения можно воспользоваться шаблонами для WebMatrix. Эти шаблоны позволяют создать пустые приложения-заготовки, которые можно использовать для дальнейшей разработки.
Для их установки выберем Zoo —> Packages —> WebMatrix Templates.


Если WebMatrix у вас не установлен — не беда, он будет скачан и установлен автоматически во время установки шаблонов к нему. После установки запустим WebMatrix и на главной выберем Site from Template:


Как видно на скриншоте Node.js — не единственный фреймворк, для которого доступны шаблоны WebMatrix.

После создания Node.js Site, если перейти по указанному URL или нажать «Run», вы увидите простой «Hello, World!».


По умолчанию вновь созданный сайт содержит фреймворк express, для более простого создания веб-приложений. Он сам и его зависимости находятся в директории node_modules под сайтом, что будет удобно для развертывания приложения на удаленном сервере.

Директория public предназначена для хранения статических файлов. Любой файл, помещенный в эту директорию, будет обработан непосредственно IIS как статический файл, не приводя к вызову Node.js. Это особенно важно чтобы избежать случайного запуска клиентских *.js файлов на сервере.

Файл web.config содержит в частности URL Rewrite правила для статических файлов. Вначале любой запрос проверяется на наличие такого статического файла в директории public. Это нужно для некоторых веб приложений, которые любят смешивать статические и динамические ресурсы в одной директории, чаще корневой. Если ваше приложение не подвержено этой, однозначно порочной практике, то удалите правила для Microsoft URL Rewrite из файла web.config и ссылайтесь на статические файлы, указывая директорию public явно.

А еще в файле web.config содержатся конфигурационные директивы необходимые для запуска Node.js и Helicon Zoo Module на этом сайте.

Пишем первое приложение

Одна из прелестей Node.js в том, что JavaScript — известный язык, который широко используется в веб разработке. Это значит, что у вас не возникнет проблем с выбором редактора. В нашем случае бесплатный WebMatrix вполне подойдет для начала.

Для работы будем использовать созданный нами ранее Node.js Site. Нужно будет отредактировать файлы server.js и index.html.


Вот исходные коды файла server.js:


Для вступления изменений в силу нужно нажать Restart и затем Run:


Теперь можно убедится что чат работает, запустив его в двух разных браузерах:


Установка модулей

Для любого веб фреймворка возможно самой важной характеристикой является доступность различных модулей и использование сторонних технологий. В текущей реализации менеджер пакетов Node (Node PackageManager) под Windows работает нестабильно, хотя поддержка Windows уже заявлена и в скором будущем ситуация может измениться. На данный момент можно пользоваться менеджером пакетов написанным на Python — ryppi.py. Тут нужно помнить одну тонкость — ryppi.py всегда устанавливает модули в директорию node_modules текущей директории, где он вызван. Т.е. чтобы поставить модуль под сайт нужно зайти в директорию сайта и вызвать там команду:


Еще следует отметить, что не все из существующих модулей работают под Windows. Так, например великолепная, на мой взгляд, библиотека node-sync, написная кстати хабровчанином octave, под Windows работать не будет. Библиотека позволяет во многих случаях избавится от громоздкой парадигмы коллбеков, не теряя при этом асинхронной природы Node, однако базируется она на реализации node-fibers, которая под Windows не портирована. Надеюсь, что в будущем поддержка волокон (fibers) будет встроена в Node.js напрямую.
И все же большинство модулей будет стабильно работать на Windows.

CoffeScript

Можно взять CoffeeScript, как самый популярный на данный момент. Код написанный на CoffeeScript проще и его удобнее читать. Затем этот код компилируется в обычный JavaScript и исполняется. А код на JavaScript наоборот можно сконвертировать в CoffeeScript. Например скрипт server.js из нашего чата на языке CoffeeScript выглядит так:

Отладка Node.js-приложений

  • приложение, которое нужно отлаживать, запускается в debug-режиме (вызов node.exe с параметром --debug или --debug-brk);
  • запускается node-inspector, который по сути тоже есть веб-приложение;
  • по WebSocket-протоколу эти два приложения общаются между собой для передачи отладочных данных;
  • в браузере открывается страница с отлаживаемым приложением;
  • в webkit-совместимом браузере открывается интерфейс node-inspector с отладочной информацией, его интерфейс аналогичен Web Inspector в Google Chrome или Safari.


Отладчик в браузере выглядит так:


Развертывание на сервере

Итак, мы написали веб приложение и теперь хотим выложить его в сети. Для этого нам нужен сервер, и теперь нет ничего проще, чем настроить Windows сервер для работы с Node.js. Нам лишь понадобиться повторить несколько шагов из начала статьи, которые мы делали для развертывания рабочего окружения. А именно: поставить Microsoft Web Platform Installer, добавить в него Helicon Zoo feed и установить Node.js Hosting Package из репозитория Zoo. Все — сервер готов принять наше приложение. Из серверных платформ поддерживаются Windows 2008 и 2008 R2, 32 и 64 битные версии.

Теперь требуется только создать на сервере пустой веб сайт, используя менеджер IIS или хостинг панель, если мы делаем свой хостинг, и откопировать наше приложение на сайт по FTP или WebDeploy. В случае с WebDeploy будут еще и розданы необходимые права на папки. Можно также использовать Git или другую систему контроля версий, но это выходит за рамки данной статьи.

Helicon Zoo Module изначально разрабатывался с расчетом конфигурирования хостинг решений. Так все приложения под ним разделены и не пересекаются. Сам модуль с настройками по умолчанию работает в автоматическом режиме, создавая один воркер (процесс-обработчик), когда нагрузка мала или добавляя воркеров вплоть до числа ядер, чтобы дать максимальную производительность, если нагрузка на приложение возрастает.

В Helicon Zoo используется концепция движков (engines) и приложений (applications). Так в движках определяется, что запускать и как, по какому протоколу и на каком порту, сколько минимально и максимально воркеров разрешено и подобные глобальные настройки, которые задаются глобально в файле applicationHost.config. Затем уже под сайтом можно создать приложение, использующее конкретный движок и передать ему необходимые параметры для работы этого приложения. Это позволяет отделить работу администратора хостинга от клиентов, а клиентов друг от друга.

Тесты производительности Node.js

Тестовая машина в качестве сервера — Core 2 Quad 2.4 Ghz, 8 Gb RAM, гигабитная сеть. Для генерации нагрузки использовался более мощный компьютер и Apache Benchmark командой «ab.exe -n 100000 -c 100 –k». Для тестирования Apache и Nginx использовалась Ubuntu 11.04 Server x64. IIS 7 тесты работали на Windows Server 2008 R2. Никаких виртуалок — честное железо.

Было проведено три теста. В первом Node.js должен был просто выводить на страничке текущее время с высоким разрешением. Время нужно чтобы гарантировать что ответы не идут из кеша. Во втором тесте производилось чтение из базы данных MySQL, в третьем запись в базу данных.

Вот результаты (величина на графиках — запросы в секунду):




Впечатляет, не правда ли? Теперь немного объяснений, что же меряют эти тесты. Называть их тестами производительности возможно не совсем верно, мы ведь не разные процессоры меряем. У процессора может быть производительность, а у веб серверов скорее обратный результат — сколько процессорного времени они потратили на каждый запрос.

Так в первом тесте меряются чистые накладные расходы на обработку запроса каждым конкретным веб сервером и их способность использовать ресурсы процессора. Быстрее данная связка технологий на этом процессоре вернуть ответ просто не в состоянии. В этом тесте сильно отстал Nginx на Windows потому что в этой системе Nginx открывает новое соединение с бекэндом на каждом запросе. А вот Apache на Windows наоборот порадовал пулингом соединений и настоящими потоками.

Второй и третий тесты показывают, как меняется доля накладных расходов веб сервера на обработку запроса при увеличении «веса» запроса. Однако на них теперь оказывает большее влияние множество других факторов, как то производительность файловой системы, драйверов базы данных и самой базы. Для эксперимента мы протестировали также связку Windows + Zoo + MongoDB, просто чтобы посмотреть разницу с Mongo. Ее результаты – 6793 з/с на чтение и 2906 з/с на запись. Впечатляет, особенно скорость записи.

Еще один интересный факт – программно аппаратная база, использованная в этих тестах та же самая, что и при тестировании Django в этой статье. Так что результаты этих тестов можно сравнивать. Разумеется, скрипты на Node.js гораздо более легковесны, мы не использовали шаблонов, ORM и т.п. но все же есть повод задуматься.


По просьбам читателей выкладываем подробные графики ab. Повторно измерили только первый тест, там где простой вывод времени, потому что на нем лучше всего видно накладные расходы самого веб сервера. Конфигурационные файлы и тестируемые js скрипты можно взять тут. Там только инклуды, все остальное по умолчанию. Горизонтальная шкала — запросы, вертикальная — время ответа в милисекундах.


Windows, IIS7 + Zoo, «вывод времени»:


Ubuntu, Apache, «вывод времени»:


Ubuntu, Nginx, «вывод времени»:

Выводы

Я думаю что Node.js — весьма многообещающая технология. Она обладает впечатляющей производительностью и гибкостью. Особенно приятно, что Node.js одинаково хорошо как на Unix, так и на Windows, и использует правильные для каждой из этих операционных систем технологические решения, что отчетливо видно по результатам тестов.

Скоро мы планируем добавить поддержку Erlang и Java в Helicon Zoo. Будет интересно сравнить по производительности еще эти технологии. Пока же Node.js явный лидер по скорости среди поддерживаемых веб фреймворков.

PS: Отдельная благодарность rukeba и XaocCPS за помощь в публикации этой статьи.


Если вы решили изучить самую актуальную техническую тему в наши дни «Node.js» и вы являетесь пользователем Windows, то вы попали в нужное место. Если вы только начинаете, вы можете увидеть, что многие люди используют Mac или Linux для разработки Node.js. Возможно, ваш преподаватель курса тоже это делает. Но, может быть, вы хотите работать на самой Windows. Многие люди переключаются между платформами, когда дело доходит до разработки, но зачем переходить, когда Windows полностью способна помочь вам начать любую разработку. Этот пост посвящен настройке хорошей среды разработки Node.js на компьютере с Windows.

  1. Сам Node.js
  2. Git
  3. Современный редактор кода
  4. MongoDB (необязательно)

Итак, давайте сразу же приступим к работе.

Node.js

После загрузки запустите установщик, и вам не нужно вносить никаких изменений, просто нажмите «Далее» на всех этапах. В Node.js встроен Node Package Manager, который необходим для загрузки и установки сторонних модулей. Вы обнаружите, что используете NPM очень часто. Поэтому не меняйте этот параметр при установке Node.js на свой компьютер. Кроме того, программа установки автоматически изменяет переменные PATH, чтобы вы могли запускать команды npm из CMD. Итак, если вы хотите изменить какие-либо из этих параметров, перейдите к пользовательской настройке; иначе я бы порекомендовал экспресс установку.


Запустив установщик, вы можете столкнуться с несколькими шагами, когда вы не будете знать о своих действиях. Есть один шаг, который я хотел бы обсудить. Шаг с надписью «Настройка переменной PATH» является одним из важных шагов. Здесь вам нужно выбрать способ использования Git на вашем компьютере.


После завершения установки вы можете открыть окно командной строки и ввести git -version , чтобы убедиться, что у вас установлен Git.

Редактор кода

Выбор редактора кода может быть сложной задачей, когда у вас так много вариантов. Вы можете выбрать что-то между полноценной IDE, такой как WebStorm, или редактором кода, таким как Brackets. Вот несколько рекомендаций:

Это были только мои рекомендации; Вы можете выбрать любую IDE или редактор. Вы даже можете написать код в простом блокноте, если вы достаточно смелы.

MongoDB

Теперь запустите mongod.exe, чтобы запустить ваш сервер MongoDB. И запустите «mongo.exe» для взаимодействия с сервером через командную строку или используйте Compass, если вы предпочитаете графический интерфейс. Вы даже можете добавить этот каталог в переменную PATH для непосредственного запуска mongod и mongo из командной строки. Вы можете узнать здесь об изменении пути к системным переменным .

Это всё! Вы готовы написать свое первое приложение Node.js. У вас есть правильные инструменты и настройки среды для разработки.

Читайте также: