如何使用 Prisma、Nextjs 和 Vercel 设置环境变量

gra*_*ury 13 next.js prisma

Nextjs 希望您使用.env.local文件来存储环境变量。棱镜用途.env

如果我使用.env.local文件然后设置 Prisma 数据库

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
Run Code Online (Sandbox Code Playgroud)

我收到DATABASE_URL不存在错误。

为 Prisma、Nextjs、Vercel 应用程序设置环境变量的正确方法是什么?

Che*_*del 9

您可以使用dotenv-cli强制加载特定的环境文件。

1-安装dotenv-cli

2-创建脚本以在包上的 prisma 迁移之前运行 env

"scripts": {
    ...
    "prismaDev": "dotenv -e .env.local prisma migrate dev ",
  }
Run Code Online (Sandbox Code Playgroud)

3-现在你可以简单地运行npm run prismaDev

  • Prisma 在 https://www.prisma.io/docs/guides/development-environment/environment-variables/managing-env-files-and-setting-variables 的文档中建议使用“dotenv-cli”。Prisma CLI 默认情况下仅读取 `.env`,但对于 Next.js,您不应将机密存储在 `.env` 中,而应存储在 `.env.local` 中。Next.js 在其“@next/env”包中使用“dotenv”,但您无法通过 CLI 配置 Prisma 来利用它,除非您创建自己的使用“@next/env”的脚本。 (5认同)
  • 为什么要使用额外的包?Nextjs 已经以特定的方式处理环境变量。 (2认同)