Turbo Repo中如何修正CLI应用指向schema.prisma的路径?
Turbo Repo中CLI应用找不到Prisma Schema的解决办法
问题根源
CLI应用运行时,Prisma默认在当前工作目录下查找schema.prisma,但你的schema文件存放在database包目录里,路径不匹配导致找不到。
解决步骤
1. 给CLI应用指定Schema路径
在CLI应用根目录(如packages/cli)创建.env文件,添加:
PRISMA_SCHEMA_PATH=../database/prisma/schema.prisma
或者直接在初始化Prisma Client的代码里指定路径:
import { PrismaClient } from '@repo/database'; const prisma = new PrismaClient({ schema: '../database/prisma/schema.prisma', datasources: { db: { url: process.env.DATABASE_URL }, }, });
2. 配置Turbo构建依赖
修改项目根目录的turbo.json,确保CLI应用的构建任务依赖database包的构建,保证Prisma Client已生成:
{ "pipeline": { "build": { "dependsOn": ["^build"], "outputs": [".next/**", "dist/**"] }, "cli#build": { "dependsOn": ["database#build"] } } }
3. 确认database包的Prisma命令配置
在packages/database/package.json的scripts里,给Prisma命令明确指定schema路径,避免生成或同步时出错:
{ "scripts": { "db:generate": "prisma generate --schema=./prisma/schema.prisma", "db:push": "prisma db push --schema=./prisma/schema.prisma" } }
Turbo官方Prisma指南(中文翻译)
Prisma 指南
在Turbo Repo中使用Prisma需注意以下要点:
- 共享Prisma Client:将Prisma Client放在独立的包(如database包)中,供所有应用共享,避免重复生成Client代码。
- Schema路径配置:所有使用Prisma的应用,必须通过环境变量或代码配置指定schema的正确路径——因为Prisma默认从当前工作目录查找schema文件。
- 构建依赖顺序:确保使用Prisma Client的应用,在构建前先完成database包的构建(比如执行
prisma generate),保证Client代码已生成且可访问。- 环境变量传递:在Turbo Repo中,要确保
DATABASE_URL这类环境变量能正确传递到各个包。尤其是CLI这类不会自动加载环境变量的应用,可能需要手动加载.env文件。
内容的提问来源于stack exchange,提问作者Benjamin Davis
相关产品推荐
相关产品推荐

