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

T3 App环境变量无效排查:process.env仅NODE_ENV有值

T3-App环境变量加载失败排查方案
  • 检查.env文件的位置与命名
    确保.env(本地开发推荐用.env.local,避免提交到Git)放在项目根目录,和package.json、next.config.js同级,别放在src或其他子文件夹里。

  • 重启开发服务器
    修改.env文件后,Next.js不会自动重载环境变量,必须完全停止当前dev服务(Ctrl+C),再重新运行npm run dev或pnpm dev。

  • 检查.env文件的语法正确性

    • 变量名不能带空格,比如要写DATABASE_URL=xxx,不是DATABASE_URL = xxx
    • 如果变量值包含特殊字符(比如URL里的@、&,或者空格),必须用双引号包裹,示例:
      DATABASE_URL="postgres://user:password@localhost:5432/mydb"
      NEXTAUTH_URL="http://localhost:3000"
      
    • 变量值前后别加多余空格,比如NEXTAUTH_SECRET= abc123会让值带空格,可能触发验证错误。
  • 确认环境文件与NODE_ENV匹配
    Next.js会根据NODE_ENV加载对应配置文件:

    • 开发环境(NODE_ENV=development)加载.env + .env.development
    • 生产环境(NODE_ENV=production)加载.env + .env.production
      如果变量写在了错误的环境文件里(比如开发时用了.env.production),就会加载不到。
  • 补全T3的环境变量验证逻辑
    你当前的代码只是把process.env变量赋值给serverEnv,但没执行zod的验证解析,完整逻辑应该是用parse方法校验:

    import { z } from "zod";
    
    export const serverSchema = z.object({
        DATABASE_URL: z.string().url(),
        NODE_ENV: z.enum(["development", "test", "production"]),
        NEXTAUTH_SECRET: z.string(),
        NEXTAUTH_URL: z.preprocess(
            (str) => process.env.VERCEL_URL ?? str,
            process.env.VERCEL ? z.string() : z.string().url(),
        ),
        GOOGLE_CLIENT_ID: z.string(),
        GOOGLE_CLIENT_SECRET: z.string(),
        STRIPE_SECRET_KEY: z.string(),
    });
    
    // 用zod解析验证,确保变量符合规则
    export const serverEnv = serverSchema.parse({
        DATABASE_URL: process.env.DATABASE_URL,
        NODE_ENV: process.env.NODE_ENV,
        NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
        GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
        GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
        NEXTAUTH_URL: process.env.NEXTAUTH_URL,
        STRIPE_SECRET_KEY: process.env.STRIPE_SECRET_KEY,
    });
    

    缺少parse步骤的话,即使变量加载成功,也可能因为未校验而抛出错误。

  • 排查文件权限与Git忽略规则
    确保.env文件有读取权限,同时检查.gitignore是否意外屏蔽了该文件(这不会影响本地加载,但如果是部署环境要注意)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:25:47