Я создал Rails-Api с интерфейсом React SPA, следуя этому руководству (очень полезно, рекомендую). У меня проблемы с получением Heroku для установки переменных окружения в файле .env, который React использует для конфигурационных переменных. Значения файла просто устанавливаются буквально как «ENV [...]» вместо оценки и установки значения. Что касается Rails, то параметры Heroku ENV установлены правильно, потому что я вижу их в консоли.
.env file:
REACT_APP_API_KEY=ENV['API_KEY']
REACT_APP_AUTH_DOMAIN=ENV['AUTH_DOMAIN']
App.js (top level Component):
console.log(config,process.env);
// which logs:
{
NODE_ENV: "production"
REACT_APP_API_KEY: "ENV['API_KEY']"
REACT_APP_AUTH_DOMAIN: "ENV['AUTH_DOMAIN']"
...
}
Rails Console:
irb(main):001:0> ENV
=> {"LANG"=>"en_US.UTF-8", "NODE_ENV"=>"production",
"API_KEY"=>"<correct-value>", "AUTH_DOMAIN"=>"<correct-value>",......}
Есть ли что-то, что мне нужно сделать, чтобы предупредить Heroku о том, что Варианты ENV также должны быть установлены в файле .env для приложения реакции? В учебном руководстве по развертыванию Heroku используются оба пакета сборки nodejs и ruby (в этом порядке). Приложение создается и затем копируется в каталог «publi c» для Rails для обслуживания:
package.json
{
//...
"engines": {
"node": "12.9.0",
"yarn": "1.22.4"
},
"scripts": {
"build": "yarn --cwd client install && yarn --cwd client build",
"deploy": "cp -a client/build/. public/",
"heroku-postbuild": "yarn build && yarn deploy"
}
}
Я не знаю достаточно о внутренней работе с Heroku env vars swap. Из того, что я понимаю, с помощью Create React App ... содержимое файла .env установлено во время сборки , поэтому вполне возможно, что js скомпилируется до того, как Heroku сможет ввести env-переменные. Я открыт для предложений о других способах сделать это, если этот метод не выполним. Спасибо!