T3 应用程序`? 无效的环境变量:`

Ygb*_*gbh 6 environment-variables next.js t3 trpc.io

我正在使用 T3-app(nextjs、tRPC 等),我不知道这些 env 变量错误是否刚刚发生,或者我之前是否没有注意到它们。但是,我在文件中设置了所有环境变量.env,并在文件中设置了以下配置schema.mjs

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(
        // This makes Vercel deployments not fail if you don't set NEXTAUTH_URL
        // Since NextAuth automatically uses the VERCEL_URL if present.
        (str) => process.env.VERCEL_URL ?? str,
        // VERCEL_URL doesnt include `https` so it cant be validated as a URL
        process.env.VERCEL ? z.string() : z.string().url(),
    ),
    GOOGLE_CLIENT_ID: z.string(),
    GOOGLE_CLIENT_SECRET: z.string(),
    STRIPE_SECRET_KEY: z.string(),
});

export const serverEnv = {
    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,
};
Run Code Online (Sandbox Code Playgroud)

然而,该process.env对象是未定义的。唯一具有值的是 ,NODE_ENV但它与其他环境变量没有任何不同。

我很不明白为什么会发生这种情况。我已经查过这个问题,但没有任何结果。我做错了什么吗?

环境变量错误

Jac*_*cob 1

我是 T3 和 Ct3A 的早期维护者和创意人之一

因此,Create T3 App 的核心是 NextJS,这可能只是您如何实现.env与 NextJS 期望文件的方式不一致的一个小问题。

对于本地开发环境,env 文件应该是 ->.env.local 有关如何执行环境变量和文件结构的更多详细信息,请参阅与此问题相关的NextJS 文档

  • 非常感谢您的澄清,我已经为此奋斗了几个小时! (2认同)