Process.Env 未填充在 Azure 上的 React 应用程序中

Process.Env Isn't Populated in React App on Azure

我正在尝试在 Azure 应用服务中获取 React 应用程序 运行,但在使环境变量起作用时遇到困难。

本地

当 运行 在本地时,我正在使用 .env.local 文件加载环境变量(未签入 git)。

REACT_APP_SERVER_URL=http://localhost:5000

然后我可以通过使用 process.env.REACT_APP_SERVER_URL 引用它来在我的应用程序中使用它。一切都按预期工作。

在 Azure 上

现在我正在尝试让同样的东西在 Azure 中运行。我已经使用应用程序设置设置了配置(在他们的文档 here and here 中有描述)。

我可以使用 kudu 进入调试控制台,并看到正在设置环境变量。

但是使用 process.env.REACT_APP_SERVER_URL 并没有引入那个值。如果我 console.log(process.env) 我的 url 不显示。

我的 React 应用程序是几天前使用 create-react-app cli 创建的。我的 React 应用程序是通过 git 集线器操作和以下启动命令部署的:(pm2 serve /home/site/wwwroot/build --no-daemon --spa)

根据我在网上阅读的内容,它“应该”正常工作,所以我不确定故障是什么。我的想法是 pm2 可能会阻止环境变量,但不确定。

This guy 好像和我有类似的问题,但是没有详细说明这个问题的答案。而且我不想将配置存储在 package.json 中,因为那是 Azure Config 应该帮助我做的事情。

从基础架构的角度来看,React 单页应用只是一堆静态文件 - HTML、JS、CSS,等等。它无法进入服务器读取这些变量,因为没有服务器端代码 运行.

您将不得不捆绑您的环境变量,无论是在 .envpackage.json 内还是在任何地方。