【发布时间】: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 -v和set 并查看了所有这些变量的值,而配置变量似乎不是其中的任何一个。
编辑:我还想指出,我已经在没有服务器的仅静态 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
【问题讨论】: