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

AWS Amplify部署Next.js时STRAPI环境变量返回undefined问题

解决AWS Amplify部署Next.js时非NEXT_PUBLIC环境变量返回undefined的问题
  • 检查Amplify环境变量的部署范围
    确认在Amplify控制台设置变量时,是否勾选了**"Apply to all branches"或者当前部署分支的专属变量。分支变量会覆盖全局变量,若只在全局设置但分支未同步,就会出现变量读取失败的情况。另外,要确保变量被设置为运行时可用**——Next.js的Node端逻辑(比如API路由、getServerSideProps)依赖运行时变量,Amplify控制台的变量设置里别把它归到构建时类别。

  • 验证Next.js的环境变量加载逻辑
    确保Node端代码通过process.env.STRAPI调用变量,不要加NEXT_PUBLIC_前缀(这个前缀是给客户端暴露变量用的)。如果你的Next.js版本有自定义next.config.js配置,需要把STRAPI显式加入env字段:

    module.exports = {
      env: {
        STRAPI: process.env.STRAPI,
      },
    };
    

    注意:非NEXT_PUBLIC_前缀的变量只能在Node端(服务器组件、API路由、SSR/SSG函数)访问,如果你的调用代码在客户端组件里,必然会返回undefined,先确认代码的执行环境。

  • 检查Amplify的构建配置
    打开Amplify控制台的Build settings查看amplify.yml,确认构建阶段正确传递了环境变量。比如build命令前没有重置process.env的脚本,配置示例如下:

    version: 1
    frontend:
      phases:
        preBuild:
          commands:
            - npm install
        build:
          commands:
            - npm run build
      artifacts:
        baseDirectory: .next
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    
  • 排查CloudWatch日志细节
    在CloudWatch的构建日志里搜索STRAPI,看构建时是否正确加载了变量。如果日志里找不到这个变量,说明Amplify没正确传递,检查变量拼写(环境变量区分大小写)、设置是否生效。再看运行时日志(比如API路由的执行日志),确认process.env.STRAPI在运行时是否存在。若构建时存在但运行时消失,尝试选择**"Full rebuild"**重新部署,避免增量构建的缓存问题。

  • 其他排查步骤
    用简单测试值(比如test123)替换原变量值,排除特殊字符导致的解析错误;清理Amplify的部署缓存后重新构建;确认本地.env文件中变量正常,排除代码本身的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:35:51