环境变量未在Prisma架构中注册



我发现Prisma模式检测环境变量的唯一方法是在其应用程序的根目录中包含一个.env文件。

我正在使用docker compose来构建一些服务,其中之一是一个使用Prisma管理数据库的应用程序。环境变量可通过process.env在应用程序中获得,但Prisma无法使用env功能检测到这一点。

以下是我如何访问schema.prisma:中的变量

datasource db {
provider = "postgresql"
url      = env("DATABASE_URL")
}

我以这种方式传递docker compose中的变量:

app:
build:
context: ./app
environment:
DATABASE_URL: ${DATABASE_URL}

如何使此函数检测不一定属于.env变量的环境变量?

我最终解决了这个问题!当我在终端中运行命令时,我会在docker容器之外运行它们。所以在docker内部运行的prisma代码运行得很好,但我在外部运行的命令看不到.env文件。

我能够通过在脚本中添加env值来解决问题。这可能不是最优雅的解决方案,但它确实有效。例如:

eval $(grep '^DATABASE_URL' ../.env) prisma db pull && prisma generate

最新更新