Мы создаем наши приложения создания-реагирования как статические веб-сайты и помещаем их непосредственно на простой веб-сервер. Вот почему вы не можете использовать переменные env там. Мы нашли хороший обходной путь, и мы планируем написать небольшой пост об этом:
1. Запустите ваше приложение с (одной) переменной среды
Предположим, у вас есть среда разработки, промежуточная и производственная среда, как и у большинства наших проектов.
Мы установили только одну переменную ENV REACT_APP_ENV
в наших сценариях запуска. Каждая среда имеет свой собственный скрипт запуска и сборки.
# package.json
# ...
"scripts": {
"start": "REACT_APP_ENV=development react-scripts start",
"start:staging": "REACT_APP_ENV=staging react-scripts start",
"start:prod": "REACT_APP_ENV=production react-scripts start",
"build:staging": "REACT_APP_ENV=staging react-scripts build",
"build:prod": "REACT_APP_ENV=production react-scripts build"
},
2. Установочный конфигурационный файл
В вашем приложении для создания реакции вы сохраняете файл конфигурации под src/config/index.js
. В этом конфигурационном файле вы можете определить значения в зависимости от среды.
# src/config/index.js
const env = process.env.REACT_APP_ENV
export const appConfig = {
api: {
networkInterface: ({
development: 'http://localhost:5000/graphql',
staging: 'https://project-staging.herokuapp.com/graphql',
production: 'https://project.herokuapp.com/graphql',
})[env],
// add more here
},
}
export default appConfig
3. Использование
В приложении вы получаете доступ к конфигурации просто так:
import config from './src/config'
# usage
config.api.networkInterface