Я поискал в Интернете эту информацию и не нашел ни одного ресурса, который описывал бы, как настроить переменные среды в процессе Node.js, который действительно работал у меня. Я наконец нашел эту информацию в полезном видео от Chris Courses на YouTube, поэтому я хотел кратко поделиться им с вами здесь. Похоже, есть и другие способы добиться этого, но этот сработал для меня, и я надеюсь, что он будет вам полезен.

Шаг 1: .gitignore

Мы собираемся добавить переменные в файл, который мы создадим просто .env, но перед этим давайте обязательно добавим .env в наш .gitignore файл. Если вы используете create-react-app, как и я, это уже должно быть сделано за вас, но хорошо бы перепроверить. (Если вы не знаете о .gitignore, подробнее здесь)

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

# dependencies
/node_modules
# misc
.DS_Store
.env

Шаг 2: .env.default

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

В корне нашего проекта мы собираемся создать файл с именем .env.default. Этот тип файла обладает некоторыми причудливыми возможностями, которые позволяют нам сбрасывать любые ранее установленные переменные среды на пустые значения, но пока просто думайте о нем в основном как о шаблоне, на который мы можем ссылаться позже при установке значений, чтобы мы знали, какие переменные мы ' предполагается использовать.

Вы можете использовать любые имена, какие захотите, но по общему соглашению они заключаются в заглавные буквы с подчеркиванием между словами. Теперь наш .env.default файл выглядит так:

NODE_ENV=
DB_HOST=
DB_USER=
DB_PASSWORD=
DB_NAME=

Не беспокойтесь о пустых заданиях. Помните, это просто напоминание на потом.

Шаг 3: .env

Большой! Итак, мы знаем, какие переменные мы хотим использовать, теперь нам просто нужно их присвоить. Давайте продолжим и добавим .env файл в корень нашего проекта. Он должен появиться рядом с нашим .env.default файлом в дереве проекта.

Мы можем скопировать и вставить содержимое нашего .env.default файла в этот и присвоить некоторые значения. Теперь файл .env должен выглядеть примерно так (с вашими собственными соответствующими значениями):

NODE_ENV=development
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=baconpancakes
DB_NAME=tree_fort

Если вы в основном используете JavaScript, это может показаться немного странным, но не беспокойтесь о недостатке кавычек, пробелов или точек с запятой. Просто настройте файл таким образом и введите свои собственные значения!

Шаг 4: требуется

Итак, у нас установлены переменные, и теперь нам просто нужно заставить нашу программу запускать этот файл, чтобы мы могли их использовать.

Во-первых, убедитесь, что у вас установлен пакет dotenv, запустив yarn add dotenv или npm install dotenv --save.

Затем просто включите эту строку кода в один из ваших бэкэнд-файлов:

require('dotenv').config();

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

Затем мы можем использовать заданные нами переменные! Мы можем получить к ним доступ через объект process.env. Вот пример:

console.log(process.env.DB_PASSWORD) // baconpancakes
console.log(process.env.DB_USER) // root

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

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

-Кэмерон