Понимание файла .env и переменных среды в React JS

#javascript #node.js #reactjs #variables #environment-variables

#javascript #node.js #reactjs #переменные #переменные среды

Вопрос:

Я относительно новичок в мире веб-разработки, и теперь я пытаюсь понять использование .env file в React JS. Итак, я прочитал несколько статей и посмотрел несколько поясняющих видеороликов. Однако большинство из них были сосредоточены на том, как его использовать, а не на том, что это на самом деле. Правильно ли я понимаю, что основными преимуществами использования переменных среды являются:

1) Они упрощают обслуживание приложений, поскольку все они хранятся в одном файле .env 2) Они не видны пользователям и не отображаются и не загружаются в репозиторий Git

Правильно ли это и есть ли что-нибудь еще, что мне нужно рассмотреть?

Комментарии:

1. Распространенным вариантом использования файлов .env является, как вы намекаете, но не совсем говорите, хранение секретных переменных. Из-за их секретного характера они не должны попадать в какие-либо git-диффы / журналы. Это может быть полезно для того, чтобы сделать код общедоступным, не выдавая секреты организации, или даже для того, чтобы позволить двум разным разработчикам запускать один и тот же код, скажем, с разными учетными данными локальной базы данных.

2. env для «среды». Когда вы загружаете приложение со своего персонального ноутбука, вам могут потребоваться переменные, специфичные для вашего ноутбука, его «среды», в отличие от того, когда приложение обслуживается из облака, которые могут иметь разные переменные, например URL сервера api

3. Кстати, вы МОЖЕТЕ добавить файл в git, если можете доверить содержимое разработчикам доступа к репозиторию.

Ответ №1:

Они полезны для хранения значений и настроек всего сайта, которые не относятся к состоянию или объявлениям (глубоко) в исходном коде.

Важно знать, что для того, чтобы react мог их использовать, с них нужно начинать REACT_APP_ . Это связано с тем, что среда является средой nodejs, и nodejs будет запрашивать все переменные, если они не начинаются с REACT_APP_

Переменные среды, начинающиеся с REACT_APP_ , внедряются в код приложения во время сборки.

Не храните там никаких секретов (таких как закрытые ключи) в качестве REACT_APP_ переменных! Это откроет их в сборке JS.

В вашем приложении react вы можете получить доступ к переменным следующим образом:

 let value = {process.env.REACT_APP_MYVALUE}
  

В HTML вы можете использовать переменные как таковые:

 <title>%REACT_APP_SITE_NAME%</title>
  

Хорошая краткая информация об использовании create-react-app: https://create-react-app.dev/docs/adding-custom-environment-variables

Ответ №2:

Использование

Переменные среды (.env) используются для хранения конфиденциальной информации или, как следует из названия, информации, ориентированной на среду (в реальном времени, разработка, отладка и т. Д.)

.env файл также хранится внутри .gitignore , поэтому он не передается ни в какие репозитории.

Отслеживание переменных

.env.example это файл, который не хранится .gitignore , но он необходим другим разработчикам, чтобы знать, как и что помещать в их .env . Это выглядит примерно так:

.env.example:

 REACT_APP_STRIPE_KEY=
MY_SECRET_KEY=
THIS=
FOO=
BAR=
  

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

Комментарии:

1. Я отменил свой предыдущий комментарий и понизил голос. Я неправильно истолковал ваш пост как REACT_APP_SECRET_KEY, который раскрывает секретный ключ.

2. @Ozone Нет проблем, важно знать, относится ли вопрос среды к его / ее приложению React

Ответ №3:

Создайте файл в корневой папке.Its .env-файл

 REACT_APP_(VARIABLE_NAME)=KEY_HERE
  

Использование:
когда вы добавили переменную в файл .env. Перезапустите приложение.

 console.log( process.env.REACT_APP_(VARIABLE_NAME) )
  

И вашего файла .gitignore добавьте приведенный ниже код

 .env