Реагируйте, настраивайте переменные в зависимости от среды

#javascript #reactjs #typescript

Вопрос:

В моем приложении react у меня есть компонент, скажем, диаграмма, в которой вызывается внешний API.

Во время работы в локальной среде URL-адрес API будет localhost:8080 при развертывании, и URL-адрес API должен быть prod:8080

В примерах, основанных на .env, используется process.env, и внутри компонента, в котором API называется process, не определен.

Есть ли способ получить доступ к файлу env внутри компонента, который запускается в браузере.

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

1. Если вы используете CRA для настройки своего проекта, вы можете выбрать его встроенные инструменты , если вы используете некоторые пользовательские настройки, основанные на вашей собственной конфигурации Webpack, вы можете проверить dotenv , crossenv или просто использовать плагин определения Webpack.

2. Единственное, что вам следует иметь в виду, это то, что все вышеперечисленные решения подразумевают, что process.env.SOMETHING во время сборки вы будете заменены фактическим значением соответствующей переменной среды (следовательно, доступной на стороне клиента), и вы должны быть осторожны, чтобы не раскрывать какие-либо конфиденциальные данные в вашем файле .env.

Ответ №1:

Если вы используете CRA:

Документация React по переменным среды:

«Ваш проект может использовать переменные, объявленные в вашей среде, как если бы они были объявлены локально в ваших файлах JS. По умолчанию для вас будет определен NODE_ENV и любые другие переменные среды, начинающиеся с REACT_APP_. »

В противном случае вы можете использовать что-то вроде dotenv и импортировать его в свое приложение index.tsx

Для вашего конкретного случая использования вы также хотите иметь 2 .env файла, так как вам нужен один для development и production . Так что взгляните на это.