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

AWS Amplify环境变量在Next.js应用中无法生效,求解决方案

解决AWS Amplify部署Next.js环境变量读取问题

关于控制台提示的作用

那句提示完全有用:将amplify.yml文件放在仓库根目录后,Amplify会优先使用该文件的构建设置,覆盖控制台中的配置。这种方式能让构建规范纳入版本控制,避免控制台配置丢失或不一致的问题。

彻底解决的步骤

1. 在仓库根目录创建/替换amplify.yml文件

使用以下配置,确保环境变量正确注入到Next.js的构建流程中:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        # 初始化.env.production文件,避免重复追加导致变量重复
        - >
          cat > .env.production << EOF
          MONGODB_URI=$MONGODB_URI
          EOF
        # 批量将所有NEXT_PUBLIC_前缀的环境变量写入.env.production
        - for var in $(env | grep -E "^NEXT_PUBLIC_"); do echo "$var" >> .env.production; done
        - npm run build
  artifacts:
    baseDirectory: .next
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
      - .next/cache/**/*

2. 关键配置说明

  • 初始化.env.production:用cat >而非>>初始化文件,避免多次部署后同一个变量被重复写入多行,导致读取异常。
  • 明确写入服务器端变量:像MONGODB_URI这类无NEXT_PUBLIC_前缀的服务器端变量,直接通过定向写入的方式添加到文件,确保Next.js构建时能读取到。
  • 批量处理客户端变量:通过循环自动抓取所有NEXT_PUBLIC_开头的变量并写入文件,无需逐个手动添加,适配多变量场景。

3. 验证与后续操作

  • 确认Amplify控制台中已正确配置所有需要的环境变量(包括MONGODB_URI和各类NEXT_PUBLIC_前缀变量)。
  • 将修改后的amplify.yml提交到仓库,触发Amplify重新构建。构建时Amplify会自动使用仓库根目录的配置文件,环境变量会被正确写入.env.production,Next.js构建流程即可正常读取。

额外注意事项

  • 不要将.env.production提交到仓库,保持其在构建时动态生成,防止敏感信息泄露。
  • 如果变量值包含空格、引号等特殊字符,在Amplify控制台配置时需用引号包裹变量值,避免写入文件时出现格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:01:11