Следующие шаги могут помочь. Попробуйте:
Для получения дополнительной информации вы также можете обратиться к исходным документам:
Добавление пользовательских переменных среды
Первый шаг:
Создание .env
файла в root проекта
Структура проекта после создания файла .env
:
...
- build
- public
- src
|----- App.js
|----- index.js
- package.json
- .env
...
Внутри .env
файла: (например) Требуется префикс REACT_APP_
!
REACT_APP_URL_DEVELOPMENT=http://localhost:8000/api
REACT_APP_URL_PRODUCTION=https://productionDomain.com/api/
Второй шаг:
пакет. json файл:
Scripts
Нет необходимости изменять package.json
файл:
{
"name": "my-app",
"version": "0.1.0",
"private": true,
"homepage": "http://myWebsite.com",
"dependencies": {
...
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Третий шаг:
Наконец, вы можете условно использовать созданные вами переменные.
Пример:
class Posts extends Component{
...
componentDidMount(){
// Finally, you can conditionally use the variables you created.
const url = process.env.NODE_ENV === "development" ? process.env.REACT_APP_URL_DEVELOPMENT : process.env.REACT_APP_URL_PRODUCTION;
axios.get(url)
.then(res => { ... })
.catch(err => { ... });
}
render(){
return(
...
)
}
}
Раздел часто задаваемых вопросов:
process.env
- это глобальный Объект, предоставляемый вашей средой через NodeJs. Потому что у нас нет NodeJS в браузере. Но вы можете получить доступ к NODE_ENV
, запустив ваше приложение, используя create-react-app
с webpack
, включенным по умолчанию, и выполнить описанные выше шаги. Более подробная информация ниже:
Существует встроенная переменная среды, которая называется NODE_ENV
. Вы можете получить к нему доступ process.env.NODE_ENV
. Эта переменная изменяется в зависимости от того, в каком режиме вы находитесь в данный момент. Когда вы запускаете npm start
, он равен development
, когда вы запускаете npm test
, он равен test
, а когда вы запускаете npm run build
, это равен production
. Эта переменная является особенной, поскольку ее можно использовать для доступа к различным конфигурациям среды в зависимости от вашего режима.