Переменные среды являются фундаментальной частью развития узла, но по какой-то причине я никогда не беспокоился о том, как их правильно использовать.
Может быть, потому что они называются «переменными среды».
Просто слова «переменная окружающей среды» триггерная воспоминания PTSD, в которой я пытаюсь добавить правильный путь к каталогу домашнего каталога Java в Windows. Это идет по пути или Java_home или оба? Мне нужно заканчивать его с запятой? Почему я использую Java?
В узле переменные среды могут быть глобальными (например, в Windows), но часто используются с конкретным процессом, который вы хотите запустить. Например, если у вас было веб-приложение, у вас может быть переменные среды, которые определяют:
- HTTP Port для прослушивания
- Строка подключения к базе данных
- Java_home … Подожди … Нет – извините. Процесс заживления требует времени.
В этом контексте переменные среды действительно больше похожи на «настройки конфигурации». Увидеть, сколько приятнее это звучит?
Если вы сделали .NET раньше, вы можете быть знакомы с чем-то вроде web.config файл. Переменные среды узла работают так же, как и настройки в web.config. – Это способ для вас, чтобы пройти информацию, которую вы не хотите, чтобы не хочешь жесткого кода.
Но как ты использовать Эти переменные в вашем узле приложения? Мне было трудно найти хорошие ресурсы об этом с необходимым количеством шуток Java, поэтому я решил создать один. Вот некоторые из различных способов определить, а затем чтение переменных среды в приложениях вашего узла.
Пройти в терминале
Вы можете пропустить переменные среды на терминале как часть вашего узла. Например, если вы управляете приложением Express и хотели пройти в порт, вы могли бы сделать это так …
PORT=65534 node bin/www
Забавный факт: порт 65535 – крупнейшее значение TCP/IP доступно. Откуда я знаю? Stackoverflow конечно Отказ Как никто ничего не знает? Но вы можете пойти как можно только как порт 65534 для веб-приложения, потому что это самый высокий порт Chrome. Откуда я знаю что? Потому что Лиран Таль сказал мне в комментариях. Вы должны следовать за ним. Между ними из нас он тот, кто знает, что он делает.
Теперь, чтобы использовать переменную в вашем коде, вы бы использовали Process.env объект.
var port = process.env.PORT;
Но это может стать уродливым. Если у вас была строка подключения, вы, вероятно, не захотите начать передавать несколько переменных на терминале. Похоже, вы были бы накопительными ценностями конфигурации, а кто-то, кто любит вас, может начать вмешательство, и это было бы неловко для всех вовлеченных.
PORT=65534 DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb" SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
Это не масштабируется, и все хотят масштабироваться. По словам каждого архитектора, я когда-либо сидел на встрече, с «масштабированием» важнее, чем приложение, даже работающее.
Итак, давайте посмотрим на другой способ: .env файлы.
Используйте файл .env
.ENV Файлы позволяют вам поместить вашим переменным среды внутри файла. Вы просто создаете новый файл под названием .env.env. В вашем проекте и понизите ваши переменные там на разных линиях.
PORT=65534 DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb" SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
Чтобы прочитать эти значения, есть пара вариантов, но самое простое – использовать Доценв Пакет из НПМ.
npm install dotenv --save
Тогда вам просто требуется этот пакет в вашем проекте, где вам нужно использовать переменные среды. Доценв Пакет заберет этот файл и загрузит эти настройки в узел.
Use dotenv to read .env vars into Node
require('dotenv').config();
var MongoClient = require('mongodb').MongoClient;
// Reference .env vars off of the process.env object
MongoClient.connect(process.env.DB_CONN, function(err, db) {
if(!err) {
console.log("We are connected");
}
});Protip: не проверяйте свой .env файл в github. У этого есть все, что вы секреты, и GitHub по электронной почте вам и скажет вам так. Не будь как я.
Хорошо, хорошо. Но это своего рода боль. Вы должны поставить это в каждый файл, где вы хотите использовать переменные среды, и вы должны развернуть Доценв Для производства, где вам на самом деле это не нужно. Я не огромный поклонник развертывания бессмысленного кода, но я думаю, что я только что описал всю свою карьеру.
К счастью, вы используете VS код (Потому что Конечно, вы ), поэтому у вас есть другие варианты.
Работа с файлами .env в VS-коде
Во-первых, вы можете Установите расширение DOTENV Для кода, который даст вам хороший синтаксис, подчеркивающий в ваших файлах .env.
Дотенв – Visual Studio Marketplace Расширение для визуального студийного кода – поддержка файлового синтаксиса DOTENV MarketPlace.visualstudio.com.
Отладчик VS Code также предлагает несколько удобных вариантов загрузки значений от файлов .env Если Вы используете VS-код отладчика.
VS Code Запуск Конфигурации
Отладчик узла для VS-кода (уже нет необходимости устанавливать ничего) поддерживает загрузку в файлах .env через запускные конфигурации. Подробнее о запуске конфигурации здесь Отказ
Когда вы создаете конфигурацию базового запуска узла (нажмите на шестерню и выберите Узел), вы можете сделать одну или обе из двух вещей.
Во-первых, вы можете просто пройти переменные на запуска конфигурации.
Это приятно, но тот факт, что каждое значение должно быть строка беспокоит меня. Это число, а не строка. JavaScript только имеет, например, 3 типа. Не берите один из них от меня.
Здесь проще проще. Мы уже научились любить .env Файлы, поэтому вместо их передачи мы можем просто дать VS-код имя файла .env.
И до тех пор, пока мы начинаем наш процесс от VS-кода, файлы переменных среды загружаются. Нам не нужно изучать цифры на строки, и мы не развертываем бесполезный код в производство. Ну, по крайней мере, вы не.
Начиная с NPM вместо узла
Возможно, вы получили это далеко и подумали: «Берк, я никогда не бегаю Узел что-нибудь. Это всегда сценарий NPM, как NPM начать “.
В этом случае вы все равно можете использовать конфиги запуска VS Code. Вместо того, чтобы использовать стандартный процесс запуска узла, вы добавляете конфиг, который является задачей «Запуск через NPM».
Теперь вы можете добавить обратно в свой Envfile линия и твик Runtimeargs Так что они запускают правильный скрипт. Это Обычно что-то вроде «начать» или «отладку».
Обратите внимание, что вы должны добавить Iinspect Флаг к вашему сценарию NPM, чтобы код VS может прикрепить отладчик Отказ В противном случае задача будет запущена, но отладчик VS Code будет успешным, как я, пытаясь получить дату в средней школе.
Переменные среды производства
Пока что мы смотрели, как определить переменные для развития. Вы, скорее всего, не будете использовать файлы .env в производстве, а VS Code Запуск конфигураций не будет очень полезным на сервере.
В производстве будут определены переменные, однако ваша платформа выбор позволяет вам это сделать. В случае Azure есть 3 различных способа определить и управлять переменными среды.
Первый способ – использовать Azure Cli Отказ
az webapp config appsettings set -g MyResourceGroup -n MyApp --settings PORT=65534
Который работает, но, EW.
Еще один путь – через веб-портал Azure. Я не всегда использую веб-портал, но когда я делаю, это установить переменные среды.
В случае Azure они называются «Настройки приложения».
И поскольку вы используете VS-код, вы можете установить расширение службы приложений и управлять всеми параметрами приложения Право от редактора Отказ
Я люблю не иметь, чтобы покинуть VS-код, чтобы сделать что-нибудь. Я бы написал электронные письма в VS-коде, если бы мог.
ПОДОЖДИТЕ МИНУТУ!
Markdown-Mail – Visual Studio Marketplace Расширение для Visual Studio Code – Использование Markdown Чтобы написать свою электронную почту и отправить! marketplace.visualstudio.com
Теперь тебе известно
Теперь вы знаете, что я знаю (который многое знаю, позвольте мне сказать вам), и я чувствую, что я достиг своей цели в со вкусному количеству шуток Java по пути. На всякий случай, если я не сделал, я оставлю тебя с этим.
Отказ от ответственности: большая часть этого – плохая попытка юмора, а некоторые из них за счет Java; что не приятно, но очень легко. Эти шутки не пишут себя.
Оригинал: “https://www.freecodecamp.org/news/heres-how-you-can-actually-use-node-environment-variables-8fdf98f53a0a/”