Общие сведения о Node.js
Node.js — это среда выполнения JavaScript с открытым кодом, работающая на стороне сервера на основе ядра JavaScript V8 (Chrome). Она была создана Райаном Далем (Ryan Dahl) и выпущена в 2009 г.
Работает ли Node.js в Windows?
Да. Windows поддерживает две разных среды для разработки приложений с помощью Node.js:
- Среда разработки Node.js в Windows.
- Среда разработки Node.js в подсистеме Windows для Linux.
Чтобы понять, какую среду использовать, ознакомьтесь со статьей Выбор между установкой в Windows и подсистеме Windows для Linux.
Что можно делать с помощью Node.js?
Node.js в основном используется для создания быстрых и масштабируемых веб-приложений. При этом используется управляемая событиями неблокирующая модель ввода-вывода, что делает эту платформу простой и эффективной. Это отличное решение для разработки приложений реального времени, обрабатывающих большие объемы данных и выполняющихся на распределенных устройствах. Ниже приведено несколько примеров того, что можно создать с помощью Node.js.
- Одностраничные приложения (SPAs): это веб-приложения, которые работают в браузере и не нужно перезагрузить страницу каждый раз, когда вы используете ее для получения новых данных. Некоторые примеры одностраничных приложений включают в себя приложения социальных сетей, электронную почту, приложения карт, текст в Интернете, инструменты для рисования и т. д.
- Приложения в режиме реального времени (RTAs) — это веб-приложения, которые позволяют пользователям получать информацию сразу после публикации автором, а не требовать, чтобы пользователь (или программное обеспечение) периодически проверка источник обновлений. Некоторые примеры RTA включают в себя приложения для обмена мгновенными сообщениями и комнаты чатов, многопользовательские онлайн-игры, которые можно играть в браузере, документы для совместной работы в сети, хранилище сообщества, приложения видеоконференций и т. д.
- Приложения потоковой передачи данных: это приложения (или службы), которые отправляют данные или содержимое по мере поступления (или создаются), сохраняя подключение открытым для продолжения скачивания дополнительных данных, содержимого или компонентов по мере необходимости. К некоторым примерам относятся приложения потоковой передачи видео и аудио.
- REST API: это интерфейсы, которые предоставляют данные для взаимодействия с веб-приложением другого пользователя. Например, служба API календаря может предоставлять даты и время для концертного помещения, которое может использоваться веб-сайтом локальных событий другого пользователя.
- Серверные отрисованные приложения (SSR): эти веб-приложения могут работать как на клиенте (в браузере, так и в интерфейсном интерфейсе) и сервере (серверной части), что позволяет страницам, которые являются динамическими для отображения (создать HTML-код для любого содержимого), известного и быстро захватывают содержимое, которое неизвестно как доступно. Их часто называют «изоморфными» или «универсальными» приложениями. Службы SSR используют методы SPA, поскольку им не нужно перезагружаться при каждом использовании. Тем не менее, SSR предлагают несколько преимуществ, которые могут быть или не быть важны для вас, например, включение содержимого вашего сайта в результаты поиска Google и предоставление изображения для предварительного просмотра, когда ссылки на ваше приложение публикуются в социальных сетях, таких как Twitter или Facebook. Потенциальным недостатком является то, что они требуют постоянной работы сервера Node.js. С точки зрения примеров, приложение для социальных сетей, поддерживающее события, которые пользователи захотят видеть в результатах поиска и социальных сетях, может извлечь выгоду из SSR, в то время как приложение для электронной почты может хорошо работать как SPA. Вы также можете запускать преобразованные сервером приложения, отличные от SPA, как например блог WordPress. Как видите, все может осложниться, вам просто стоит решить, что важно.
- Средства командной строки: это позволяет автоматизировать повторяющиеся задачи, а затем распределять инструмент по обширной экосистеме Node.js. Примером средства командной строки является cURL, под которым подразумевается клиентский URL и который используется для загрузки контента с URL-адреса Интернета. cURL часто используется для установки таких компонентов, как Node.js, в нашем случае менеджера версий Node.js.
- Аппаратное программирование: хотя и не так популярны, как веб-приложения, Node.js растет популярность для использования Интернета вещей, таких как сбор данных с датчиков, маяков, преобразователей, двигателей или что-либо, которое создает большие объемы данных. Node.js может обеспечить сбор данных, анализ этих данных, обмен данными между устройством и сервером и принятие мер на основе анализа. NPM содержит более 80 пакетов для контроллеров Arduino, raspberry pi, Intel IoT Edison, различных датчиков и устройств Bluetooth.
Следующие шаги
- Выбор между установкой в Windows и подсистеме Windows для Linux (WSL)
- Установка Node.js в Windows
- Установка Node.js в WSL
- Создание приложений JavaScript с помощью схемы обучения Node.js
Как использовать Visual Studio Code для разработки и отладки Node.js
Ознакомьтесь с инструкциями по разработке и отладке проекта на JavaScript в Node.js с помощью Visual Studio.
Подготовка среды
- Установка Visual Studio Code.
- Установите git. Интеграция Visual Studio Code с git предоставляет возможность управления Системой управления версиями на боковой панели.
- Добавьте необходимые переменные среды. В примерах этой статьи используется строка подключения базы данных MongoDB. Если у вас нет доступной базы данных mongoDB, вы можете:
- Запустить этот локальный проект в конфигурации с несколькими контейнерами. При такой конфигурации один из контейнеров должен являться базой данных mongoDB. Установите Docker и расширение Remote — Containers, чтобы получить конфигурацию с несколькими контейнерами, при которой на одном контейнере будет выполнятся локальная база данных mongoDB.
- Выберите создание ресурса Azure Cosmos DB для базы данных MongoDB. Дополнительные сведения см. в этом учебнике.
Клонирование проекта
Чтобы приступить к работе, клонируйте пример проекта, выполнив следующие действия.
- Откройте Visual Studio Code.
- Нажмите клавишу F1, чтобы отобразить палитру команд.
- В командной строке палитры введите gitcl , выберите команду Git: Клонировать и нажмите клавишу ВВОД.
- Если появится запрос ввести URL-адрес репозитория, введите https://github.com/Azure-Samples/js-e2e-express-mongodb , затем нажмите клавишу ВВОД.
- Выберите (или создайте) локальный каталог, в который нужно клонировать проект.

Установка зависимостей
В этом проекте Node.js сначала необходимо установить все зависимости проекта из npm.
- Нажмите клавиши CTRL + SHIFT + ` , чтобы отобразить интегрированный терминал Visual Studio Code.
- Используйте следующую команду для установки зависимостей:
npm install
Переход к файлам и коду проекта
Чтобы ориентироваться в базе кода, поэкспериментируем с возможностями навигации в среде Visual Studio Code.
- Нажмите клавиши CTRL + p.
- Введите .js , чтобы отобразить файлы JavaScript/JSON рядом с родительской папкой каждого файла.
- Выберите файл server.js, который является скриптом запуска приложения.
- Наведите указатель мыши на метку времени в строке 11. Эта возможность быстро проверять переменные, модули и типы в файле полезна во время разработки проектов.

- Щелкнув мышь на переменной , например метку времени , можно просмотреть все ссылки на эту переменную в одном файле. Чтобы просмотреть все ссылки на переменную в проекте, щелкните переменную правой кнопкой мыши и в контекстном меню выберите Найти все ссылки.

Использование функции автозаполнения в mongoDB
- Открытие файла data.js
- В строке 84 введите новое использование переменной db путем ввода db. . Visual Studio Code отображает доступные члены API, доступные в db .

Автозаполнение работает, потому что Visual Studio Code использует TypeScript в фоновом режиме (даже для JavaScript), чтобы передавать информацию о вводе, которая может передаваться в список завершения при вводе. Это автоматическое приобретение типов работает для более чем 2000 сторонних модулей, таких как React, Подчеркивание и Express.
Модули, которые поддерживает эта функция автозаполнения, можно увидеть в созданном сообществом проекте DefinitelyTyped, который является источником для всех определений типов TypeScript.
Выполнение локального приложения Node.js
Когда вы изучили код, пришло время запустить приложение. Чтобы запустить приложение из Visual Studio Code, нажмите клавишу F5 . При запуске кода с помощью F5 (режим отладки) Visual Studio Code запускает приложение и показывает окно консоли отладки, отображающее StdOut для приложения.

Кроме того, консоль отладки подключается к только что запущенному приложению, чтобы вы могли вводить выражения JavaScript, которые будут обрабатываться в приложении. В этой консоли также есть функция автоматического заполнения. Чтобы увидеть это поведение, введите в консоли process.env :

Откройте браузер и перейдите к http://localhost:8080 , чтобы просмотреть запущенное приложение. Введите текст в текстовое поле, чтобы добавить элемент, чтобы получить представление о том, как работает приложение.
Отладка локального приложения Node.js
Кроме того что в Visual Studio Code можно запустить приложение и взаимодействовать с ним через консоль, вы также можете задавать точки останова непосредственно в коде. Например, введите CTRL + P , чтобы отобразить средство выбора файлов. После отображения средства выбора файлов и выберите файл server.js .
Задайте точку останова в строке 53, которая является оператором if в маршруте для добавления нового элемента. Чтобы задать точку останова, щелкните область слева от номера строки в редакторе, как показано на следующем рисунке.

Помимо стандартных точек останова, средство Visual Studio Code поддерживает условные точки останова, которые позволяют указать время остановки приложения. Чтобы задать условную точку останова, щелкните правой кнопкой мыши область слева от строки, в которой нужно приостановить выполнение, выберите Add Conditional Breakpoint (Добавить условную точку останова) и укажите выражение JavaScript (например, foo = «bar» ) или число операций выполнения, определяющих условие, при котором приложение должно быть остановлено.
После установки точки останова вернитесь в работающее приложение в браузере и добавьте запись. Это действие немедленно приводит к приостановке выполнения приложения в строке 28, в которой задана точка останова:

Когда приложение будет приостановлено, можно навести указатель мыши на выражения кода, чтобы просмотреть их текущие значения, проверить локальные переменные или контрольные значения и стек вызовов, а также использовать панель инструментов отладки для пошагового выполнения кода. Нажмите клавишу F5, чтобы возобновить выполнение приложения.
Локальная полностековая отладка в Visual Studio Code
Интерфейсная и серверная часть записываются с помощью JavaScript. То есть, если вы выполняете отладку серверного кода (Node/Express), в определенный момент может потребоваться отладить код интерфейса (Angular).
Хотя вы смогли запустить и отладить код Node.js без какой-либо конфигурации Visual Studio Code, для отладки интерфейсного веб-приложения необходимо использовать файл launch.json , который указывает Visual Studio Code, как запустить приложение.
Этот пример приложения включает launch.json следующие параметры отладки:
< // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ < "name": "Test", "request": "launch", "runtimeArgs": [ "run-script", "test" ], "runtimeExecutable": "npm", "skipFiles": [ "/**" ], "type": "pwa-node" >, < "name": "Start", "request": "launch", "runtimeArgs": [ "run-script", "start" ], "runtimeExecutable": "npm", "skipFiles": [ "/**" ], "type": "pwa-node" > ] >
Средство Visual Studio Code определило, что скриптом запуска приложения является server.js.
Открыв файл launch.json, выберите «Добавить конфигурацию» (в правом нижнем углу) и выберите Chrome: «Запустить с помощью userDataDir«.

Добавление новой конфигурации запуска для Chrome позволяет отладить внешний код JavaScript.
Наведите указатель мыши на любой заданный параметр, чтобы увидеть его функцию. Кроме того, обратите внимание, что Visual Studio Code автоматически определяет URL-адрес приложения. Задайте для свойства webRoot значение $/public , чтобы отладчик Chrome знал, где найти внешние ресурсы приложения:
< "type": "chrome", "request": "launch", "name": "Launch Chrome", "url": "http://localhost:8080", "webRoot": "$/public", "userDataDir": "$/.vscode/chrome" >
Чтобы запустить и выполнить отладку внешнего и внутреннего кода одновременно, необходимо создать комплексную конфигурацию запуска, которая сообщает средству Visual Studio Code, какой набор конфигураций нужно выполнять параллельно.
Добавьте следующий фрагмент кода в качестве свойства верхнего уровня в файл launch.json (как одноуровневое свойство имеющегося свойства configurations).
"compounds": [ < "name": "Full-Stack", "configurations": ["Launch Program", "Launch Chrome"] >]
Строковые значения, указанные в массиве compounds.configurations, ссылаются на имя отдельных записей в списке конфигураций. Если вы уже изменили эти имена, внесите соответствующие изменения в массив. Например, перейдите на вкладку «Отладка» и выберите для выбранной конфигурации значение Full-Stack (Полный стек) (имя составного конфигурации) и нажмите клавишу F5 для запуска.

Выполнение конфигурации запускает приложение Node.js (это можно увидеть в выходных данных консоли отладки) и Chrome (который настроен для перехода к приложению Node.js по адресу http://localhost:8080 ).
Нажмите клавиши CTRL+P и введите (или выберите) значение todos.js, которое является основным контроллером Angular внешней части приложения.
Установите точку останова на строке 11, которая является точкой входа для создаваемой записи из списка задач.
Вернитесь к выполняемому приложению и добавьте новую запись. Вы увидите, что средство Visual Studio Code приостановило выполнение кода Angular.

Как и во время отладки Node.js, можно навести указатель мыши на выражения, просмотреть локальные переменные и контрольные значения, обработать выражения в консоли и т. д.
Есть две прохладные вещи, которые следует заметить:
- В области Стек вызовов отображаются два разных стека: Node и Chrome. При этом указано, какой из стеков приостановлен.
- Вы можете переходить между внешним и внутренним кодом, нажав клавишу F5, чтобы запустить и активировать точку останова, заданную ранее в маршруте Express.
После этого вы можете эффективно отладить внешний и внутренний код JavaScript или код полного стека JavaScript непосредственно в Visual Studio Code.
Концепция комплексного отладчика не ограничивается только двумя целевыми процессами и кодом JavaScript. Поэтому, если вы работаете с приложением-микрослужбой (это может быть polyglot), можно использовать тот же рабочий процесс (после установки соответствующих расширений для языка или платформы).
Следующие шаги
Как запустить Node.js приложение
Если вы устанавливали NodeJS с помощью стандартного установщика с официального сайта, то так:
- Открываем консоль cmd
- Переходим в папку Z:\home\localhost\www\server командой cd Z:\home\localhost\www\server
- Запускаем сервер node server.js
Отслеживать
17.9k 5 5 золотых знаков 48 48 серебряных знаков 85 85 бронзовых знаков
ответ дан 27 мар 2013 в 18:17
andreycrane andreycrane
711 3 3 серебряных знака 11 11 бронзовых знаков
Я node.exe кинул прямо в директорию «www\server» и запускаю прямо так: > node js/server.js.
28 мар 2013 в 2:30
Выдал ошибку (как обычно): module.js:340 throw err; Error: Cannot find module ‘C:\Windows\system32\server.js’ и т.д.
28 мар 2013 в 2:48
Попробуй >node .\server.js
28 мар 2013 в 7:18
C:\Windows\system32\server.js как-бы намекает на то, что вы не сделали cd
28 мар 2013 в 9:13
cd произошло, не произошла смена диска. еще надо d: до или после cd .
7 апр 2013 в 0:21
- Устанавливаете NodeJS
- Создаете файл mywebserver.js
- Добавляете в содержание mywebserver.js
const http = require('http'); const hostname = 'localhost'; const port = 8080; http.createServer((req, res) => < res.writeHead(200, < 'Content-Type': 'text/plain' >); res.end('Hello World\n'); >).listen(port, hostname, () => < console.log('Server running at http://$:$/'); >);
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 8 ноя 2016 в 11:36
131 2 2 бронзовых знака
1.Устанавливаем nodeJS 2.запускаем cmd и вводим node --version, там должно вывестись информация о версии нод,если есть значит вы правильно установили нод 3.переходим к директории где лежит ваш скрипт server.js: > cd Z:\home\localhost\www\ > node server.js
PS: но все же лучше установить Linux(что я и сделал недавно;)), там более удобно работать с терминалом. можно Linux установить вторым ОС)
Как написать и запустить свою первую программу на Node.js
Node.js – это популярная открытая среда выполнения, которая может запускать JavaScript вне браузера при помощи механизма V8. Механизм V8 используется для обработки JavaScript в браузере Google Chrome. Среда Node обычно используется для разработки инструментов командной строки и веб-серверов.
Умея работать в Node.js, вы сможете писать код для фронтенда и бэкенда на одном языке. Так будет проще переключаться между контекстами. Кроме того, вы сможете использовать одни и те же библиотеки на фронтенде и бэкенде.
Благодаря поддержке асинхронного выполнения Node.js отлично справляется с задачами с высокой нагрузкой I/O, потому он отлично подходит для веб-разработки. Приложения реального времени (например, видео-стримы или приложения, которые непрерывно отправляют и получают данные) могут работать более эффективно, если написать их в Node.js.
В этом мануале вы узнаете, как написать свою первую программу в среде выполнения Node.js. Вы познакомитесь с некоторыми концепциями, специфичными для Node. Мы создадим программу, которая поможет пользователям проверять переменные среды в своей системе. Для этого мы научимся выводить строки на консоль, собирать пользовательский ввод и получать доступ к переменным среды.
Требования
- Установка Node.js (в данном мануале мы используем версию 10.16.0). Чтобы установить эту среду выполнения на macOS, обратитесь к мануалу Установка Node.js и настройка локальной среды разработки в macOS. Для Ubuntu выполните мануал Установка Node.js в Ubuntu 18.04 (рекомендуем устанавливать через PPA).
- Базовые навыки работы с JavaScript. Полезные руководства есть в нашем Информатории.
1: Вывод на консоль
Чтобы создать простейшую программу “Hello, World!”, откройте текстовый редактор (например, nano) и создайте новый файл:
В файл введите следующий код:
Объект console в Node.js предоставляет простые методы для записи в stdout, stderr или в любой другой поток Node.js (что в большинстве случаев является командной строкой). Метод log выводит в поток stdout, так что вы можете увидеть его в своей консоли.
В контексте Node.js потоки – это объекты, которые могут принимать (например поток stdout) или выводить данные (например сетевой сокет или файл). В случае потоков stdout и stderr любые отправленные им данные будут показаны в консоли. Одна из замечательных особенностей потоков заключается в том, что они легко перенаправляются, и вы можете, например, просто перенаправить вывод своей программы в файл.
Сохраните и закройте nano, нажав сочетание клавиш CTRL + X, при появлении запроса на сохранение файла нажмите Y. Теперь ваша программа готова к запуску.
2: Запуск программы
Чтобы запустить свою новую программу, используйте такую команду:
Программа hello.js запустится и выведет такой результат:
Интерпретатор Node.js прочитал файл и выполнил строку:
вызвав метод log глобального объекта console. Строка “Hello World” была передана в качестве аргумента функции log.
Кавычки необходимы в коде, чтобы определить границы строки, но в результате они не выводятся на экран.
Убедившись, что программа работает, мы можем сделать ее более интерактивной.
3: Получение пользовательского ввода с помощью аргументов командной строки
Каждый раз, когда вы запускаете программу Node.js «Hello, World!», она выдает один и тот же результат. Чтобы сделать программу более динамичной, давайте научим ее собирать информацию от пользователя и отображать ее на экране.
Инструменты командной строки обычно принимают различные аргументы, которые изменяют их поведение. Например, команда node с аргументом –version печатает установленную версию, а не запускает интерпретатор. На этом этапе мы научим код принимать пользовательский ввод с помощью аргументов командной строки.
Создайте новый файл arguments.js в nano:
Введите следующую строку:
Объект process – это глобальный объект Node.js, который содержит функции и данные, связанные с текущим запущенным процессом Node.js. Свойство argv – это массив строк, содержащий все аргументы командной строки, заданные программе.
Сохраните и закройте файл.
Теперь при запуске программы можно использовать аргументы:
node arguments.js hello world
Вы получите такой вывод:
[ ‘/usr/bin/node’,
‘/home/8host/first-program/arguments.js’,
‘hello’,
‘world’ ]
Первым аргументом в массиве process.argv всегда является местоположение двоичного файла Node.js, с помощью которого выполняется программа. Второй аргумент – это всегда местоположение запускаемого файла. Остальные аргументы – это то, что ввел пользователь, в данном случае hello и world.
Нас больше всего интересуют не те аргументы, которые по умолчанию предоставляет Node.js, а аргументы, введенные пользователем. Откройте файл arguments.js в редакторе:
Измените console.log (process.arg); таким образом:
Поскольку argv является массивом, вы можете использовать встроенный в JavaScript метод slice, который возвращает набор элементов. Используя функцию slice с аргументом 2, вы получаете все элементы argv, которые идут в массиве после второго элемента, то есть аргументы, введенные пользователем.
Перезапустите программу с помощью команды node и тех же аргументов, что и в прошлый раз:
node arguments.js hello world
Теперь вывод выглядит так:
Итак, программа может собирать пользовательские данные, давайте теперь научимся собирать данные из среды программы.
4: Доступ к переменным среды
Переменные среды – это данные типа «ключ-значение», хранящиеся вне программы и предоставляемые операционной системой. Как правило, они устанавливаются системой или пользователем и доступны всем запущенным процессам для конфигурации или определения состояния. Вы можете использовать объект process, чтобы получить доступ к переменным среды.
Используйте nano для создания нового файла environment.js:
Добавьте следующий код:
Объект env хранит все переменные среды, которые доступны, когда Node.js запускает программу.
Сохраните и закройте файл, а затем запустите файл environment.js с помощью команды node.
После запуска программы вы должны увидеть подобный вывод:
…
COLORTERM: ‘truecolor’,
SSH_AUTH_SOCK: ‘/run/user/1000/keyring/ssh’,
XMODIFIERS: ‘@im=ibus’,
DESKTOP_SESSION: ‘ubuntu’,
SSH_AGENT_PID: ‘1150’,
PWD: ‘/home/8host/first-program’,
LOGNAME: ‘8host’,
GPG_AGENT_INFO: ‘/run/user/1000/gnupg/S.gpg-agent:0:1’,
GJS_DEBUG_TOPICS: ‘JS ERROR;JS LOG’,
WINDOWPATH: ‘2’,
HOME: ‘/home/8host’,
USERNAME: ‘8host’,
IM_CONFIG_PHASE: ‘2’,
LANG: ‘en_US.UTF-8’,
VTE_VERSION: ‘5601’,
CLUTTER_IM_MODULE: ‘xim’,
GJS_DEBUG_OUTPUT: ‘stderr’,
LESSCLOSE: ‘/usr/bin/lesspipe %s %s’,
TERM: ‘xterm-256color’,
LESSOPEN: ‘| /usr/bin/lesspipe %s’,
USER: ‘8host’,
DISPLAY: ‘:0’,
SHLVL: ‘1’,
PATH:
‘/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin’,
DBUS_SESSION_BUS_ADDRESS: ‘unix:path=/run/user/1000/bus’,
_: ‘/usr/bin/node’,
OLDPWD: ‘/home/8host’ >
Имейте в виду, что многие переменные среды зависят от конфигурации и настроек вашей системы, и ваши выходные данные могут существенно отличаться от того, что вы видите здесь.
Вместо длинного списка переменных среды вам может потребоваться получить конкретную переменную. Давайте попробуем это сделать.
5: Доступ к конкретной переменной среды
На этом этапе мы научимся просматривать переменные среды с помощью глобального объекта process.env и выводить их значения на консоль.
Объект process.env выполняет простое сопоставление имен переменных среды и их значений, хранящихся в виде строк. Как и с другими объектами в JavaScript, вы получите доступ к отдельному свойству, ссылаясь на его имя в квадратных скобках.
Откройте файл environment.js для редактирования:
Измените console.log (process.env) так:
Сохраните файл и закройте файл. Теперь запустите программу environment.js:
Вывод теперь выглядит так:
Вместо того чтобы отображать весь объект, вы теперь выводите только свойство HOME для process.env, в котором хранится значение переменной $HOME.
Опять же, ваш вывод, вероятно, будет отличаться от того, что вы видите здесь, потому что он специфичен для вашей системы.
Теперь, когда вы можете извлекать конкретные переменные среды, вы можете улучшить свою программу: она может запрашивать у пользователя переменную, которую он хочет получить.
6: Извлечение аргумента в ответ на ввод пользователя
Давайте используем возможность чтения аргументов командной строки и переменных среды для создания утилиты, которая выводит значение переменной среды на экран.
С помощью nano создайте новый файл echo.js:
Добавьте следующий код:
const args = process.argv.slice(2);
console.log(process.env[args[0]]);
В первой строке echo.js в переменной args сохраняются все аргументы командной строки, предоставленные пользователем. Вторая строка отображает переменную среды, хранящуюся в первом элементе args, то есть первый аргумент командной строки, предоставленный пользователем.
Сохраните и закройте файл. Запустите программу:
node echo.js HOME
Аргумент HOME был сохранен в массиве args, который затем использовался для поиска значения в среде через объект process.env.
Теперь вы можете получить доступ к значению любой переменной среды в вашей системе. Чтобы убедиться в этом, попробуйте просмотреть следующие переменные: PWD, USER, PATH.
Получение отдельных переменных – это хорошо, но лучше бы позволить пользователям указывать количество переменных.
7: Просмотр нескольких переменных среды
В настоящее время приложение может выдавать только одну переменную среды за один раз. Было бы полезно научить программу принимать несколько аргументов командной строки и выводить соответствующие значения. Используйте nano, чтобы отредактировать echo.js:
Отредактируйте файл так:
const args = process.argv.slice(2);
args.forEach(arg => <
console.log(process.env[arg]);
>);
Метод forEach – это стандартный метод JavaScript для всех объектов массива. Он принимает функцию обратного вызова, которая используется при выполнении итерации по каждому элементу массива. Мы используем forEach для массива args, предоставляя ему функцию обратного вызова, которая выводит значение текущего аргумента в среде.
Сохраните и закройте файл. Теперь перезапустите программу с двумя аргументами:
node echo.js HOME PWD
Вы должны увидеть следующий вывод:
Функция forEach обеспечивает вывод каждого аргумента командной строки в массиве args.
Теперь программа может извлекать переменные, которые запрашивает пользователь. Осталось только разобраться с неверным пользовательским вводом.
8: Обработка неправильного пользовательского ввода
Попробуйте передать программе неправильный аргумент:
node echo.js HOME PWD NOT_DEFINED
Вывод будет выглядеть примерно так:
/home/8host
/home/8host/first-program
undefined
Первые две строки правильные, а последняя строка имеет значение undefined. В JavaScript неопределенное значение undefined означает, что переменной или свойству не было присвоено значение. Поскольку NOT_DEFINED не является допустимой переменной среды, ее значение отображается как undefined.
Лучше вместо этого показать пользователю сообщение об ошибке, если аргумент командной строки не найден в среде.
Отредактируйте код echo.js таким образом:
const args = process.argv.slice(2);
args.forEach(arg => let envVar = process.env[arg];
if (envVar === undefined) <
console.error(`Could not find «$» in environment`);
> else <
console.log(envVar);
>
>);
Мы изменили функцию обратного вызова для forEach, и теперь она делает следующие вещи:
- Получает значение аргумента командной строки в среде и сохраняет его в переменной envVar.
- Проверяет, не является ли значение envVar undefined.
- Если envVar undefined, функция выводит полезное сообщение о том, что значение не удалось найти.
- Если переменная среды была найдена, она выведет ее значение.
Примечание: Функция console.error выводит сообщение на экран через поток stderr, а console.log – через поток stdout. Когда вы запускаете эту программу через командную строку, вы не видите разницы между потоками stdout и stderr. Однако ошибки рекомендуется выводить через поток stderr, чтобы их было легче идентифицировать и обрабатывать другими программами, которые чувствуют эту разницу.
Теперь выполните следующую команду еще раз:
node echo.js HOME PWD NOT_DEFINED
На этот раз получится:
/home/8host
/home/8host/first-program
Could not find «NOT_DEFINED» in environment
Теперь, когда программа получает аргумент командной строки, который не соответствует ни одной переменной, она выводит четкое сообщение об ошибке.
Заключение
Начав с простой программы «Hello World», вы написали утилиту командной строки Node.js, которая считывает пользовательские аргументы и выводит переменные среды.
Если вы хотите продолжить работу, вы можете еще больше изменить поведение этой программы. Например, можно проверить аргументы командной строки перед выводом результатов. Если один из аргументов не определяется, вы можете вернуть ошибку, и пользователь получит вывод, только если все аргументы будут соответствовать переменным среды.
