Запуск скриптов Node.js из командной строки
Обычно программа Node.js запускается с помощью глобально доступной команды node
(после установки Node.js) и передачи имени файла, который вы хотите выполнить.
Если ваш основной файл приложения Node.js — app.js
, вы можете вызвать его, набрав:
node app.js
Выше вы явно говорите оболочке запустить ваш скрипт с помощью node
. Вы также можете встроить эту информацию в свой файл JavaScript с помощью строки "shebang". "Shebang" — это первая строка в файле, которая сообщает ОС, какой интерпретатор использовать для запуска скрипта. Ниже приведена первая строка JavaScript:
#!/usr/bin/node
Выше мы явно указываем абсолютный путь к интерпретатору. Не во всех операционных системах node
находится в папке bin
, но во всех должна быть env
. Вы можете указать ОС запустить env
с node
в качестве параметра:
#!/usr/bin/env node
// ваш код javascript
Чтобы использовать shebang, ваш файл должен иметь разрешение на выполнение.
Вы можете дать app.js
разрешение на выполнение, выполнив:
chmod u+x app.js
При выполнении команды убедитесь, что вы находитесь в том же каталоге, который содержит файл app.js
.
Передача строки в качестве аргумента node вместо пути к файлу
Чтобы выполнить строку в качестве аргумента, можно использовать -e
, --eval "script"
. Оцените следующий аргумент как JavaScript. Модули, которые предопределены в REPL, также могут использоваться в скрипте. В Windows, при использовании cmd.exe
, одинарная кавычка не будет работать правильно, потому что он распознает только двойные "
для заключения в кавычки. В Powershell или Git bash можно использовать как "
так и '
.
node -e "console.log(123)"
Автоматический перезапуск приложения
Начиная с nodejs V 16, есть встроенная опция для автоматического перезапуска приложения при изменении файла. Это полезно для целей разработки. Чтобы использовать эту функцию, необходимо передать флаг watch
в nodejs.
node --watch app.js
Таким образом, при изменении файла приложение будет перезапускаться автоматически. Прочтите документацию по флагу --watch flag documentation.