Nodejs.dev/learn: запуск программ в среде Node.js

Dec 08, 2021 17:19

Прочел статью из учебника:
https://nodejs.dev/learn/run-nodejs-scripts-from-the-command-line

Рассказано о способах запуска из командной строки программ, написанных на языке JavaScript, в среде выполнения «Node.js».

* * *

Понятно, что в разных операционных системах есть свои разные программы, предоставляющие интерфейс командной строки. В операционной системе «Windows 10 Pro» это, например, программа «cmd.exe», которую часто и называют в операционных системах «Windows» командной строкой, хотя в операционных системах «Windows» это не единственная программа, предоставляющая интерфейс командной строки для работы в операционной системе. (Например, если в программе «Поиск Windows», открываемой щелчком мыши по иконке с увеличительным стеклом возле кнопки «Пуск», ввести фразу «Командная строка», то поиск найдет программу «cmd.exe».)

https://ru.wikipedia.org/wiki/Cmd.exe

Другой пример командной строки в операционной системе «Windows 10 Pro» - это программа «Windows PowerShell».

https://ru.wikipedia.org/wiki/PowerShell

Таким образом, запуск из командной строки в операционной системе «Windows 10 Pro» программ на языке JavaScript в среде выполнения «Node.js» можно производить как минимум из двух перечисленных выше программ.

* * *

Почему речь идет о запуске из командной строки? Потому что среда выполнения «Node.js» - это программа, заточенная под работу из командной строки. Командная строка - обычный (стандартный) путь работы с этой программой.

При установке среды выполнения «Node.js» на компьютер с операционной системой «Windows 10 Pro» эта программа регистрируется в системе так, чтобы ее можно было вызвать из любого каталога. Я об этом писал в посте, посвященном установке среды выполнения «Node.js» на компьютер.

После такой установки среды выполнения «Node.js» на компьютер можно запустить свою программу (пусть эта программа хранится в текстовом файле с именем app.js), написанную на языке JavaScript, в среде выполнения «Node.js» из командной строки с помощью следующей команды:

node app.js

* * *

В обсуждаемой здесь статье учебника подразумевается, что команды вводятся в программе, предоставляющей интерфейс командной строки для работы с операционной системой, с названием «Bash». Эта программа предназначена для работы в Unix-подобных операционных системах.

https://ru.wikipedia.org/wiki/Bash

Вышеописанный способ запуска программы на языке JavaScript из командной строки с помощью команды node в статье называют «явным» (по-английски «explicitly»). Далее значительную часть статьи учебника занимает описание другого способа запуска программы в среде выполнения «Node.js» (его можно назвать «неявным», так как мы не будем явно вводить команду запуска в командной строке) - с помощью строки с шебангом.

https://en.wikipedia.org/wiki/Shebang_(Unix)
https://ru.wikipedia.org/wiki/Шебанг_(Unix)

Я уже писал про происхождение термина «шебанг» (по-английски «shebang») в посте « Знак диеза и знак решётки».

Шебанг - это последовательность из двух символов (знака решётки и восклицательного знака) «#!». Строка с шебангом помещается первой строкой в текстовом файле с нашей программой. За шебангом следует прописать абсолютный путь к программе, которая будет интерпретировать (компилировать) текст нашей программы. Строка с шебангом - это способ запуска программ, который существовал до появления среды выполнения «Node.js» и существует сейчас. То есть эта способность присуща не только среде выполнения «Node.js».

Надо отметить, что запуск программ с помощью строки с шебангом существует в Unix-подобных операционных системах. В операционных системах «Windows», как я понимаю, этот способ по умолчанию не работает. (В операционных системах «Windows» можно привязать к файлам с определенным расширением, например, с расширением «.js» определенную программу, которая интерпретирует и запустит программу из файла с таким расширением. Эта возможность похожа на использование строки с шебангом, но она менее гибкая.)

Попытка запуска в операционной системе «Windows 10 Pro» (без установки дополнительных программ, по умолчанию) файла с расширением «.js» из программы «Проводник Windows» или из программ, обеспечивающих командную строку (см. выше), у меня приводит к передаче запускаемого файла с расширением «.js» программе «Windows Script Host», я рассказывал об этом в предыдущем посте « Запуск в Windows скриптов на языке JScript».

Если расширение «.js» убрать, то при попытке запуска такого файла без расширения в операционной системе «Windows 10 Pro» будет выведено окно со списком приложений и вопросом, какое из этих приложений нужно использовать для обработки указанного файла.

Наличие строки с шебангом не мешает запуску программы на языке JavaScript в среде выполнения «Node.js» в операционной системе «Windows 10 Pro» явным способом (с помощью команды node). Как я понимаю, при этом строка с шебангом считается чем-то вроде комментария (не учитывается) средой выполнения «Node.js».

* * *

Существует множество программ, позволяющих запускать программы Unix-подобных операционных систем на компьютере с операционной системой «Windows». Возможно, установка какой-то из этих программ даст возможность использовать строку с шебангом в операционной системе «Windows». Я решил пока отложить на будущее эксперименты с этими программами. Возможные кандидаты (вообще, есть довольно много вариантов):

Windows Subsystem for Linux (сокращенно «WSL»):
https://ru.wikipedia.org/wiki/Windows_Subsystem_for_Linux

Cygwin:
https://ru.wikipedia.org/wiki/Cygwin

* * *

Коротко о том, как используют строку с шебангом на практике.

1. Добавление строки с шебангом в файл с текстом программы на языке JavaScript (это кусочек снимка экрана, то есть картинка):



В операционной системе «Windows 10 Pro» я запускаю этот файл из командной строки с помощью команды node. Программа работает, строка с шебангом игнорируется.

В Unix-подобной операционной системе, полагаю, этот файл можно было бы запустить из командной строки просто набрав его название index.js и нажав клавишу «Enter». Операционная система передала бы данный текстовый файл программе, находящейся по абсолютному пути /usr/bin/node (среда выполнения «Node.js»), и та его интерпретировала (компилировала) и выполнила бы.

2. В статье сказано, что не во всех Unix-подобных операционных системах исполняемый файл среды выполнения «Node.js» размещается в папке /usr/bin/. Чтобы создать как можно более универсальную строку с шебангом, используют вызов программы «env» (эта программа предназначена для Unix-подобных операционных систем).

https://en.wikipedia.org/wiki/Env

Программа «env» в большинстве Unix-подобных операционных систем содержится в папке /usr/bin/. Если вызывать среду выполнения «Node.js» через эту программу, то строка с шебангом получится более универсальной (применимой к большему числу Unix-подобных операционных систем):

#!/usr/bin/env node

3. Чтобы в Unix-подобных операционных системах запускать текстовый файл с программой так, как описано в первом пункте (с помощью строки с шебангом), пользователь должен иметь право на запуск этого файла. В статье показано, как установить файлу нужные разрешения с помощью программы «chmod» (эта программа предназначена для Unix-подобных операционных систем).

https://ru.wikipedia.org/wiki/Chmod

Вот пример из статьи вызова этой программы в командной строке:

chmod u+x index.js

Здесь символом u обозначен владелец файла (то есть человек, создавший данный файл), символом + определяется операция добавления определенных прав и символом x обозначено право на запуск файла на выполнение.

Инструмент, Образование, Программирование

Previous post Next post
Up