next.js T3应用程序`错误无效的环境变量:`

mftmpeh8  于 2023-11-18  发布在  其他
关注(0)|答案(2)|浏览(129)

我正在使用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,
};

字符串
然而,process.env对象是未定义的。唯一有值的对象是NODE_ENV,但它与其他env变量没有任何不同。
我不知道为什么会发生这种情况。我已经查过这个问题了,但是没有任何结果。我做错了什么吗?
x1c 0d1x的数据

dgenwo3n

dgenwo3n1#

我是T3和Ct 3A的早期维护者和创意人员之一
因此,Create T3 App的核心是NextJS,这可能只是一个小问题,即您如何实现.env,而不是与NextJS期望的文件保持一致。
对于本地开发环境,env文件应该是-> .env.local,以了解如何处理环境变量和文件结构的更多细节,这里是与此问题相关的NextJS文档。

vnzz0bqm

vnzz0bqm2#

如果错误是这样的

❌ Invalid environment variables: {
  DISCORD_CLIENT_ID: [ 'Required' ],
  DISCORD_CLIENT_SECRET: [ 'Required' ]
}

字符串
而你只是在尝试t3。解决办法是:
1.确保你的节点版本>= 18。要检查运行node -v
1.在应用程序创建提示期间,针对“您要使用什么身份验证提供程序?”问题选择“无”。

相关问题