我之前在Vercel上部署了我的应用程序,但由于我在Azure上使用Azure AD和MongoDB,我正在将我的应用程序的托管移到Azure上,以减少网络延迟。
我将所有的环境变量设置在Configuration ->生产环境中的应用程序设置。私有变量(例如客户秘密)是完全可读的我的Next.js后端,但我的前端不能读取由NEXT_PUBLIC前缀的环境变量,即使这以前在我的其他项目上工作过Vercel和谷歌云平台。
将公共环境变量(NEXT_PUBLIC_*)打印到控制台返回undefined
。
如何区分全栈环境变量和服务器端环境变量?因为NEXT_PUBLIC似乎不起作用。
我找到了一个解决方法。在build_and_deploy_job
->steps
,增加env
字段。在这个目录下,您可以像这样放置环境变量:
env:
NEXT_PUBLIC_VARIABLE: "value1"
NEXT_PUBLIC_ANOTHER_VARIABLE: "value2"
你可以在这里找到我完整的。yml文件。
我想表达这样一个事实,即这是一个次优解决方案,对于微软这样一家价值数十亿美元的公司来说,你应该能够通过Azure Web门户直接在静态Web应用程序中放置公共/客户端环境变量。