You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Web Apps中为Next.js 14应用配置环境变量

Next.js 14 Azure部署环境变量读取问题解决方案

核心原因

Next.js 的 next.config.js 是在构建阶段执行的,所有通过 process.env 引用的变量会被静态注入到构建产物中。如果 GitHub Workflows 构建过程中没有获取到 Azure 配置的环境变量,部署后 next.config.js 自然无法读取到这些值——哪怕 Azure 应用设置里已经配置了,也只是运行时可用,无法回溯到构建阶段。

解决步骤

1. 在 GitHub Workflows 构建阶段注入 Azure 环境变量

要让 next.config.js 读取到变量,必须在构建前把 Azure 的应用设置导入到构建环境中:

  • 先确保 GitHub 仓库已配置 Azure 相关密钥(AZURE_WEBAPP_NAME、AZURE_RESOURCE_GROUP、AZURE_CREDENTIALS)。
  • 在 Workflow 的构建步骤前添加脚本,拉取 Azure 应用设置并导出为环境变量:
- name: 安装依赖工具
  run: sudo apt-get install -y jq

- name: 拉取Azure应用设置并注入环境
  run: |
    az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
    az webapp config appsettings list --name ${{ secrets.AZURE_WEBAPP_NAME }} --resource-group ${{ secrets.AZURE_RESOURCE_GROUP }} | jq -r '.[] | "export \(.name)=\(.value)"' > appsettings.sh
    source appsettings.sh

- name: 构建Next.js应用
  run: npm run build

2. 区分构建时与运行时变量

  • 构建时变量(next.config.js 中使用的):必须在构建阶段暴露,按上一步操作执行即可。
  • 运行时变量(API 路由、Server Components 中使用的):无需额外处理,Azure 应用设置中的变量会自动注入到运行环境,直接用 process.env.VAR_NAME 即可读取。

3. 放弃启动脚本创建 .env.production 的尝试

构建完成后再创建 .env.production 完全无效,因为 next.config.js 的逻辑已经在构建阶段执行完毕,运行时的 .env 文件不会影响已生成的构建产物。

4. 检查部署动作的参数

如果使用 azure/webapps-deploy@v2 动作,不要在 app-settings 参数中覆盖或遗漏需要的变量,否则会清空 Azure 原有配置。如果需要同步变量,确保参数包含所有必要键值对:

- name: 部署到Azure Web Apps
  uses: azure/webapps-deploy@v2
  with:
    app-name: ${{ secrets.AZURE_WEBAPP_NAME }}
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
    app-settings: |
      VAR_NAME=${{ secrets.VAR_NAME }}
      ANOTHER_VAR=${{ secrets.ANOTHER_VAR }}

内容的提问来源于stack exchange,提问作者Austin Howard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 07:07:46