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

Next.js(v14.0.3)客户端适配环境设置BASE_URL的方法

Next.js 14 + AWS Amplify Cognito 环境变量配置问题解答

是的,客户端侧必须用带NEXT_PUBLIC_前缀的环境变量,这是Next.js的核心机制决定的。

Next.js的环境变量规则很明确:不带NEXT_PUBLIC_前缀的变量只会保留在服务端环境中,不会被打包到客户端代码里,所以客户端代码访问这类变量必然返回undefined;只有带NEXT_PUBLIC_前缀的变量才会被注入到客户端打包产物,客户端才能正常读取。

给你具体的实现步骤:

  • 配置环境变量文件
    在项目根目录创建对应的环境文件:

    • 开发环境文件.env.development:
      NEXT_PUBLIC_BASE_URL=http://localhost:3000
      
    • 生产环境文件.env.production:
      NEXT_PUBLIC_BASE_URL=https://my-prod-site.com
      
  • 在Amplify Auth配置中使用该变量
    修改你的Amplify配置代码,直接引用process.env.NEXT_PUBLIC_BASE_URL:

    import { Amplify } from 'aws-amplify';
    
    Amplify.configure({
      Auth: {
        Cognito: {
          userPoolId: '你的用户池ID',
          userPoolClientId: '你的客户端ID',
          oauth: {
            domain: '你的Cognito域名',
            redirectSignIn: `${process.env.NEXT_PUBLIC_BASE_URL}/auth/callback`,
            redirectSignOut: `${process.env.NEXT_PUBLIC_BASE_URL}/`,
            scope: ['email', 'openid'],
            responseType: 'code'
          }
        }
      }
    });
    
  • 补充说明:不用担心客户端暴露BASE_URL的安全问题,因为Cognito控制台本身就要求你配置允许的重定向地址列表,只要把开发和生产环境的BASE_URL都加入这个列表,就不会有未授权的重定向风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:10:01