[英]How to access Heroku Config Vars in Bash
我试图在我的反应应用程序中使用process.env.REACT_APP_*
进程环境变量,在使用npm run build
on heroku 构建它之后,但我的设置有一个服务器和一个客户端,所有反应代码都在一个单独的客户端文件夹中根:
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 -v
并set
和查看所有这些变量的值和配置变量似乎都不是其中的任何一个。
编辑:我还要注意,我已经在一个没有服务器的静态 heroku 部署上尝试过这个,根文件夹是反应应用程序本身,当我 console.log 时,我能够看到我的配置变量(进程.env):
NODE_ENV: "production"
PUBLIC_URL: ""
REACT_APP_TEST: "HELLO WORLD" <<===========
WDS_SOCKET_HOST: undefined
WDS_SOCKET_PATH: undefined
WDS_SOCKET_PORT: undefined
当 heroku 运行“npm run build”时,它实际上是在构建 server.js 文件。 因此,环境变量被注入到 server.js 中。 如果你在 server.js 中的某个地方 console.log 它们,你就会拥有它们。 客户端实际上不是使用 heroku 构建的,因此没有注入环境变量。 这是正常的。 您可以更改项目文件夹结构来解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.