【问题标题】:How to access Heroku Config Vars in Bash如何在 Bash 中访问 Heroku Config Vars
【发布时间】:2020-09-27 17:02:50
【问题描述】:

我试图在我的 react 应用程序中使用 process.env.REACT_APP_* 进程环境变量,然后在 heroku 上使用 npm run build 构建它,但我的设置有一个服务器和一个客户端,所有反应代码都在一个单独的客户端文件夹中根:

root
└ client/
  └ build/
└ server.js

即使在我的本地开发服务器中,这也不能正常工作,我不得不在客户端中使用单独的 .env 文件,并在前面加上 REACT_APP 的相同键/值对。在我的本地,我同时运行服务器和客户端,但在 Heroku 上,它内置在 client/build 下的静态应用程序中。我在 heroku 网站上定义的配置变量显然无法在静态应用程序中访问,因为当我控制台记录 process.env 变量时,我只看到这些变量:

NODE_ENV: "production"
PUBLIC_URL: ""
WDS_SOCKET_HOST: undefined
WDS_SOCKET_PATH: undefined
WDS_SOCKET_PORT: undefined
__proto__: Object

我在 heroku 站点上定义了几个 REACT_APP_* 变量,但它们都没有进入静态构建,但它们可以在服务器上完全访问。

我需要一种方法来访问静态站点上的变量,我目前正在探索在运行 npm run build 之前通过 bash 脚本手动将 .env 文件写入客户端文件夹的可能性,但我运行了 compgen -vset 并查看了所有这些变量的值,而配置变量似乎不是其中的任何一个。

编辑:我还想指出,我已经在没有服务器的仅静态 heroku 部署上尝试过此操作,并且根文件夹是 react 应用程序本身,当我看到我的配置变量时console.log(process.env):

NODE_ENV: "production"
PUBLIC_URL: ""
REACT_APP_TEST: "HELLO WORLD"   <<===========
WDS_SOCKET_HOST: undefined
WDS_SOCKET_PATH: undefined
WDS_SOCKET_PORT: undefined

【问题讨论】:

    标签: node.js reactjs heroku


    【解决方案1】:

    heroku 运行“npm run build”时,实际上是在构建 server.js 文件。因此,环境变量被注入到 server.js 中。如果您在 server.js 中的某个位置控制台记录它们,您将拥有它们。客户端实际上并没有使用 heroku 构建,因此没有注入环境变量。这很正常。您可以更改项目文件夹结构来解决此问题。

    【讨论】:

    • 我在根目录中的构建脚本是 cd 进入客户端并在那里运行构建:``` "build": "cd client && npm run build" ``` 所以我在问什么选项我必须在构建之前将 process.env 变量发送到客户端。我只需要知道如何在 bash 中访问它们,我可以编写一个脚本来完成它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2021-10-03
    • 2019-09-10
    相关资源
    最近更新 更多