Вот как вы можете фактически использовать переменные среды.

1656664820 vot kak vy mozhete fakticheski ispolzovat peremennye sredy

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

Возможно потому, что они называются «переменными среды».

Только слова «Переменная среда» вызывают воспоминание о посттравматическом стрессовом расстройстве, в котором я пытаюсь добавить правильный путь в домашний каталог Java в Windows. Входит ли он в PATH или JAVA_HOME или в оба? Нужно ли заканчивать его точкой с запятой? ПОЧЕМУ Я ИСПОЛЬЗУЮ JAVA?

ALjN6DcPA7VdZAcLA1vpTCzYLdx1lU3NtbOW
УБЕЙ МЕНЯ

В Node переменные среды могут быть глобальными (как в Windows), но часто используются с определенным процессом, который необходимо запустить. Например, если у вас есть веб-приложение, у вас могут быть переменные среды, которые определяют:

  • Порт HTTP для прослушивания
  • Строка подключения к базе данных
  • JAVA_HOME… подождите… нет – простите. Процесс заживления требует времени.

В этом контексте переменные среды действительно больше похожи на «Параметры конфигурации». Видите, как это приятнее звучит?

Если вы раньше работали с .NET, возможно, вы знакомы с чем-то вроде a web.config файл. Сменные среды узла работают примерно так же, как настройки в a web.config — это способ передать вам информацию, которую вы не хотите жестко кодировать.

lPJ7qP4TxdCmfuP6yYy5vnHuoUa8WH23RSqh
Цитировать самого себя – это вершина заблуждения

Но как вы использовать эти переменные в вашем приложении Node? Мне было трудно найти хорошие ресурсы по этой теме с необходимым количеством шуток о Java, поэтому я решил создать один. Вот некоторые из различных способов определения и чтения переменных среды в программах Node.

Передайте его в терминале

Вы можете передавать переменные среды на терминал как часть процесса Node. Например, если вы запускаете 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 в вашем проекте и разместите свои переменные в разных строках.

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"

Чтобы прочитать эти значения, есть несколько вариантов, но самым простым является использование dotenv пакет от NPM.

npm install dotenv --save

Тогда вам просто нужен этот пакет в вашем проекте, где вам нужно использовать переменные среды. The dotenv пакет заберет этот файл и загрузит эти настройки в Node.

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");
  }
});

ЗАЩИТА: не проверяйте свою .env файл в Github. В нем есть все ваши секреты, и Github пришлет вам электронное письмо и расскажет об этом. Не будь как я.

Нормально хорошо. Но это своего рода боли. Вы должны разместить это в каждом файле, где вы хотите использовать переменные среды, и вы должны развернуть dotenv на производство, где оно вам действительно не нужно. Я не очень поклонник развертывания бессмысленного кода, но, пожалуй, я только что описал всю свою карьеру.

К счастью, вы используете код VS (поскольку конечно ты), поэтому у вас есть другие варианты.

Работа с файлами .env в VS Code

Во-первых, вы можете установить расширение DotENV для кода, который обеспечит хорошую подсветку синтаксиса в файлах .env.

DotENV — Visual Studio Marketplace
Расширение для Visual Studio — поддержка синтаксиса файла dotenv
marketplace.visualstudio.com

5TqqPI4CyihReGrXCaFqLDEAADqD-AJtHS4Y

VS Code Debugger также предлагает некоторые более удобные параметры для загрузки значений из файлов .env если вы используете программу настройки кода VS.

Конфигурации запуска кода VS

Настройщик Node для VS Code (уже есть, ничего не нужно устанавливать) поддерживает загрузку файлов .env из-за настройки запуска. Вы можете прочитать больше о настройках запуска здесь.

f6NKkdg6vZOubtIzh4k4EGEVUWtvC7ZC88SK

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

Во-первых, вы можете просто передать переменные в конфигурацию запуска.

OKoRgCmVBQJG3p2ZQ9em6NaMIYwNauEwp6Wd

Это хорошо, но тот факт, что каждое значение должно быть строчкой, меня немного беспокоит. Это число, а не строчка. JavaScript имеет всего 3 типа. Не отнимайте у меня ни одного из них.

Здесь есть более простой способ. Мы уже научились любить .env файлы и вместо того, чтобы передавать их, мы можем просто дать VS Code название файла .env.

5mkXYjMBORIWKSTBZzCcZTK33ubGUTFy7SuZ

И пока мы начинаем наш процесс с кода VS, файлы переменных среды загружаются. Нам не нужно превращать числа в строки, и мы не разворачиваем бесполезный код в производстве. Ну, по крайней мере, ты нет.

Начиная с NPM вместо Node

Вы могли зайти так далеко и подумать: «Берк, я никогда не бегаю node что угодно. Это всегда сценарий npm npm start”.

В этом случае вы все еще можете использовать конфигурации VS Code Launch. Вместо использования стандартного процесса запуска узла вы добавляете конфигурацию, являющуюся задачей «Запуск через NPM».

7tUmGEn-i6T30kHkzfXYj5qzAK8rB6qMTZir

Теперь вы можете снова добавить свой envFile линию и настройки runtimeArgs чтобы они запускали верный сценарий. Это есть обычно что-то вроде «начать» или «наладить».

bkDqIcWImMhXbMrGry73ABhvBWCG2x5Sy92k

Обратите внимание, что вам нужно добавить --inspect к вашему сценарию npm, чтобы код VS мог подключить отладчик. Иначе задача запустится, но отладчик кода VS закончит время ожидания, как я пытаюсь устроить свидание в средней школе.

tGcPy6sdBlu9sR1OD07VdHD9MuSgj9-uDb7K

Сменные производственной среды

Пока мы рассматривали, как определить переменные для разработки. Вероятно, вы не будете использовать файлы .env в производстве, а конфигурации запуска кода VS не будут слишком полезны на сервере.

В производстве переменные будут определены, невзирая на то, что ваша платформа позволяет это делать. В случае Azure есть 3 разных способа определения переменных среды и управления ими.

Первый способ – использовать Azure CLI.

az webapp config appsettings set -g MyResourceGroup -n MyApp --settings PORT=65534

Это работает, однако, фу.

Другой способ – через веб-портал Azure. Я не всегда использую веб-портал, но когда пользуюсь, то для установки переменных среды.

В случае Azure они называются «Параметры программы».

prz52i4eiyXapzYAPqEIQ9ggSnCYwFGTYWzi

А поскольку вы используете VS Code, вы можете установить расширение App Service и управлять всеми параметрами программы прямо из редактора.

4L4UwQ0TYob3wz -- qcO2AQfmjFIxhMQ6ecax

Мне нравится, что зачем-то не нужно оставлять VS Code. Я бы писал электронные письма в VS Code, если бы мог.

ПОДОЖДИ МИНУТКУ!

markdown-mail — Visual Studio Marketplace
Расширение для кода Visual Studio – использование уценки для написания электронной почты и отправки!
marketplace.visualstudio.com

Теперь ты знаешь

Теперь вы знаете то, что я знаю (что немного, позвольте мне сказать вам), и я чувствую, что я достиг своей цели, попутно со вкусом шуток на Java. В случае, если я этого не сделал, я оставлю вас с этим.

Java является очень мощным инструментом для преобразования XML в трассировку стека.

— Неизвестно

Предостережения сатиры: большинство из этого является неудачной попыткой юмора, и некоторая из них за счет Java; это неприятно, но очень легко. Эти шутки не пишутся сами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *