【发布时间】:2020-07-02 21:05:31
【问题描述】:
我在this guide 之后构建了一个带有 React SPA 前端的 Rails-Api(非常有帮助,会推荐)。我在让 Heroku 在 React 用于配置变量的 .env 文件中设置环境变量时遇到问题。文件的值只是按字面意思设置为“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 还需要在 react 应用程序的 .env 文件中设置 ENV 变量吗?本教程让 Heroku 部署同时使用 nodejs 和 ruby 构建包(按此顺序)。该应用程序已构建,然后复制到 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 文件的内容是set at build time,因此有可能在 Heroku 有机会注入 env vars 之前编译了 js。如果这种方法不可行,我愿意就其他方法提出建议。谢谢!
【问题讨论】:
标签: ruby-on-rails reactjs heroku environment-variables create-react-app