首页 > 解决方案 > 当我在我的反应应用程序中使用我的 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 进行部署和构建过程。

标签: node.jsreactjsherokuconfig

解决方案


如果在部署应用程序在 heroku 中设置 ENV 变量,请尝试重新部署应用程序。

使用 create-react-app 应用程序(使用 buildpack),我发现process.env变量是在部署的构建阶段设置的。因此,在构建完成后更新 heroku 仪表板中的变量并不会更新process.env对象中的变量。process.env重新部署应用程序使用我设置的环境变量更新了对象。

这也会导致管道出现问题,因为当您将应用程序 slug 提升到生产环境时,Heroku 不会重新构建它。这意味着升级的应用程序将使用process.env您的暂存应用程序中的变量,因此您必须确保您的暂存应用程序具有您希望在生产中使用的相同变量。

Heroku 部分 IMO 的重大设计缺陷。


推荐阅读