node.js - 当我在我的反应应用程序中使用我的 Heroku 配置变量时,它们以未定义的形式返回
问题描述
我使用 react建立了一个简单的简历网站;托管在 heroku 上,它的代码可以在这里找到。我正在使用服务emailjs来允许其他人通过电子邮件与我联系。在本地,我config/secrets.json
用来加载启动 emailjs 对象所需的变量。我将包含在我的 heroku 应用程序中的所有变量添加config/secrets.json
到位于Settings
Config Vars
.
您可以在此处查看我如何尝试访问这些环境变量。
当我查看控制台时,我看到了process.env.INIT_USER
输出undefined
?我INIT_USER
在我的 heroku 应用程序中使用 command 在 cli 上查看它heroku config -a app_name
。
尽管我在 herokus 应用程序设置中看到了环境变量,但我无法访问它们。
我的应用程序部署在 Heroku 中,我使用 Heroku Pipelines 进行部署和构建过程。
解决方案
如果在部署应用程序后在 heroku 中设置 ENV 变量,请尝试重新部署应用程序。
使用 create-react-app 应用程序(使用 buildpack),我发现process.env
变量是在部署的构建阶段设置的。因此,在构建完成后更新 heroku 仪表板中的变量并不会更新process.env
对象中的变量。process.env
重新部署应用程序使用我设置的环境变量更新了对象。
这也会导致管道出现问题,因为当您将应用程序 slug 提升到生产环境时,Heroku 不会重新构建它。这意味着升级的应用程序将使用process.env
您的暂存应用程序中的变量,因此您必须确保您的暂存应用程序具有您希望在生产中使用的相同变量。
Heroku 部分 IMO 的重大设计缺陷。
推荐阅读
- apollo - GraphQL:防止空数组作为输入
- python - 如果列表中包含来自对应属性的另一个数据框的值,如何添加列检查?
- azure - 即使我不使用应用程序,也可以使用委派权限
- jenkins - linux中的Jenkins从属配置问题
- c# - DbEntityValidationException 保存对象列表 ef 代码优先 SQL Server CE 数据库
- python - 迭代dict python列表的优雅方式
- mysql - 如何通过某些条件从 mysql 的 JSON 数组字段中选择 JSON 对象
- javascript - 如何创建一个在单击时增加计数器的按钮?
- python - 如何在python中更改可用行的时间
- docker - Docker Image 中的包分析