使用 Prisma 时,您可能会遇到令人沮丧的“未找到环境变量:DATABASE_URL”错误,即使您的 .env 文件中明确定义了该变量。此错误通常表示您的 schema.prisma 文件与环境变量之间断开连接,从而阻止 Prisma 访问数据库连接详细信息。
第 1 步:验证您的 .env 文件
第一步是确认 DATABASE_URL 变量已正确定义。打开根目录中的 .env 文件并确保以下内容:
DATABASE_URL="mydatabaseurlstring"
理解错误
如果 DATABASE_URL 定义正确但错误仍然存在,Prisma 可能无法访问它。 Prisma Client 依赖于 schema.prisma 文件进行配置,该文件使用 env() 函数通过环境变量检索连接 URL。如果 Prisma 在客户端生成过程中无法定位 DATABASE_URL,则会触发“未找到环境变量”错误。
解决方案:npx prisma generated
在项目的根目录中运行以下命令:
npx prisma generate
此命令重新生成 Prisma 客户端,允许 Prisma 重新读取 .env 文件中的环境变量并将它们合并到生成的客户端代码中。
为什么有效
通过重新生成 Prisma 客户端,此命令可确保 Prisma 与您的架构保持同步,并且可以访问环境变量,包括 DATABASE_URL。
其他案例场景
1。使用 Next.js 运行 Prisma Studio
在使用 Next.js 的项目中,环境变量存储在 .env.local 中,请在运行 Prisma 命令之前显式加载它:
npm install -g dotenv-cli dotenv -e .env.local -- npx prisma studio
2。 Next.js 中的 .env 与 .env.local
在 Next.js 中,将 .env.local 重命名为 .env 有时可以解决 Prisma 访问问题。 Prisma 通常默认从 .env 读取变量,因此标准化此文件可能会防止兼容性问题。
3。使用 Vercel 和 Vercel Postgres
如果您使用 Vercel 并已使用 vercel pull 将环境变量拉入 .env.development.local,请将它们复制到 .env,因为 Prisma 主要从此文件读取:
cp .env.development.local .env
现在,尝试运行 Prisma 命令,例如:
npx prisma db pull npx prisma generate npx prisma migrate
4。 PrismaClient 导入语法
如果您在导入中使用 @prisma/client/edge,例如:
DATABASE_URL="mydatabaseurlstring"
切换到:
npx prisma generate
使用 @prisma/client 而不是边缘版本可以帮助解决 Prisma 环境变量处理的不一致问题。
预防未来问题
npm install -g dotenv-cli dotenv -e .env.local -- npx prisma studio
将其加载到应用程序的入口点(例如 src/hooks.server.js):
cp .env.development.local .env
PS:这里是 Prisma 官方文档的链接,了解有关管理 .env 文件的更多详细信息。
以上是Prisma 错误:未找到环境变量:DATABASE_URL的详细内容。更多信息请关注PHP中文网其他相关文章!