Prisma - 运行GraphQL查询时出现获取环境变量未找到的错误消息

33

当我运行GraphQL查询时,Prisma会出现以下错误信息。

Environment variable not found: DATABASE_URL.\n  -->  schema.prisma:6\n   | \n 5 |   provider = \"postgresql\"\n 6 |   url      = env(\"DATABASE_URL\")\n   | \n\nValidation Error Count: 1",

起初,我的项目文件夹中没有.env文件,然后我添加了它,并附上了数据库链接,但仍然无法正常工作。 以下是文件夹结构:

The folder structure: in the root, there's node_modules, prisma and src folders, .env, .gitignore and package.json files. Inside prisma, there's a migrations folder and a schema.prisma file.

这是我.env文件中的内容:

DATABASE_URL="postgres://postgres:mypassword@db.pqtgawtgpfhpqxpgidrn.supabase.co:5432/postgres"
8个回答

106
如果有人遇到这个问题,只需运行 npx prisma generate。 这将重新建立 schema.prisma 和 .env 文件之间的链接。

2
对我来说,问题在于我有一个 DATABASE_URL="my value 的变量,但是我忘记了加上闭合的双引号!因此,这个值并不存在,因为 dotenv 无法正确解析我的错误。 - aproximation
2
如果你是一个Next.js用户,那么请看下面的答案。 - John Miller
对我来说,在下一个文件夹上它不起作用,因为我在与根项目不同的文件夹中运行命令。在正确的路径上运行npx prisma generate可以完美地工作。 - equiman
对我来说,在下一个文件夹上它不起作用,因为我在一个与根项目不同的文件夹中运行命令。在正确的路径上运行npx prisma generate可以完美地工作。 - undefined

38

在我的情况下,我想使用存储在.env.local中的所有环境变量来运行Prisma Studio和NextJS,因此需要先加载该文件。

npm install -g dotenv-cli
dotenv -e .env.local -- npx prisma studio

这里是官方Prisma文档的链接,介绍如何手动加载.env文件。


5
谢谢!这非常有帮助。我也在 package.json 文件的脚本中添加了 "migrate": "dotenv -e .env.local npx prisma migrate dev" - fotoflo
2
谢谢@fotoflo,我猜在package.json文件中添加脚本会使它变得超级简单。 - Anmol kansal
对于我的情况来说,更新package.json命令是最佳答案。这将是完美的解决方案。 - undefined

34

我在我的NextJs项目中遇到了这个问题。将.env.local文件更改为.env后一切都正常了。


1
在我的情况下,我遇到了一个关于 .env 文件本身的奇怪问题,我使用 Powershell 的 echo 命令创建了该文件。显然,在 Vscode 中手动创建它可以解决这个问题。

0
如果您尝试使用已完成的模式和空数据库,则会出现此错误。请先尝试“prisma db push”,然后再使用“prisma studio”进行验证。

0

像我这样的人(对Prisma新手,正在跟随Remix.run笑话应用程序教程),可能会松一口气地得知:不仅仅是你遇到了问题:在2022年2月初修复的Prisma 3.9.1中存在一个回归问题,而这个问题在Prisma 3.9.0中。https://github.com/prisma/prisma/issues/11570

"prisma db pull无法读取.env文件,并出现“找不到环境变量:DATABASE_URL”的错误"


0

我曾在一个 monorepo 上工作,并发现我的 turbo rollup 任务不允许我传入标志。我的解决方法是通过将 .env 复制到与 schema.prisma 文件相同的目录中,并添加一个新的命令来硬重新加载所需的标志,从而修改了我的 package.json。最终,我把这段代码添加到了我的 package.json 中。

{
 ...
 "scripts": {
   ...
   "db-push:hard": "cp .env prisma/.env && yarn prisma db push --accept-data-loss",
   ...
 },
 ...
}   

0

对我来说有效 我遇到了同样的问题,我只是运行了npx prisma db push然后一切都正常了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接