首页 >web前端 >js教程 >Prisma 错误:未找到环境变量:DATABASE_URL

Prisma 错误:未找到环境变量:DATABASE_URL

Susan Sarandon
Susan Sarandon原创
2024-10-31 08:14:30238浏览

Prisma error: Environmental variable not found: DATABASE_URL

解决 Prisma 中的“未找到环境变量:DATABASE_URL”错误

使用 Prisma 时,您可能会遇到令人沮丧的“未找到环境变量:DATABASE_URL”错误,即使您的 .env 文件中明确定义了该变量。此错误通常表示您的 schema.prisma 文件与环境变量之间断开连接,从而阻止 Prisma 访问数据库连接详细信息。


第 1 步:验证您的 .env 文件

第一步是确认 DATABASE_URL 变量已正确定义。打开根目录中的 .env 文件并确保以下内容:

  1. 存在: 检查 DATABASE_URL 变量是否存在。
  2. 正确值: 确认连接字符串正确且格式为:
   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 环境变量处理的不一致问题。


预防未来问题

  1. 重新启动服务器: 在 .env 更改后重新启动服务器可确保加载新变量。
  2. 使用dotenv加载变量:安装dotenv以有效管理环境变量:
   npm install -g dotenv-cli
   dotenv -e .env.local -- npx prisma studio

将其加载到应用程序的入口点(例如 src/hooks.server.js):

   cp .env.development.local .env
  1. 仔细检查路径和拼写: 确保您的 .env 文件位于正确的位置,并且变量名称拼写一致。

快乐黑客

PS:这里是 Prisma 官方文档的链接,了解有关管理 .env 文件的更多详细信息。

以上是Prisma 错误:未找到环境变量:DATABASE_URL的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn