You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:35:19