TurboRepo独立Prisma包配置异常:无法找到PrismaClient
解决TurboRepo中Prisma Client找不到的问题
核心问题分析
你的database包存在几个关键配置错误:
package.json的main和types字段指向未编译的.ts文件,而非TypeScript编译后的产物- TurboRepo任务依赖未正确配置,导致
server构建时database的编译产物未就绪 postinstall中手动复制.prisma目录的路径不符合monorepo结构
具体修复步骤
1. 修正database包的package.json
将main和types改为编译后的输出文件,同时简化postinstall命令:
{ "name": "database", "version": "0.0.1", "main": "./dist/index.js", "types": "./dist/index.d.ts", "scripts": { "postinstall": "prisma generate", "build": "tsc", "lint": "prisma validate", "prisma:studio": "prisma studio", "prisma:generate": "prisma generate", "prisma:push": "prisma db push --skip-generate", "prisma:seed": "prisma db seed", "prisma:deploy": "prisma migrate deploy" }, "devDependencies": { "@mermaid-js/mermaid-cli": "^9.2.2", "prisma": "^4.6.1", "prisma-erd-generator": "^1.2.4", "ts-node": "^10.9.1" }, "dependencies": { "@prisma/client": "^4.6.1", "typescript": "^4.9.3" } }
移除手动复制
.prisma的命令,prisma generate会自动将客户端文件生成到当前包的node_modules/.prisma目录
2. 为database添加tsconfig.json
确保TypeScript编译后输出到dist目录,创建database/tsconfig.json:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "declaration": true, "outDir": "./dist", "strict": true, "esModuleInterop": true }, "include": ["index.ts"], "exclude": ["node_modules"] }
3. 配置TurboRepo任务依赖
在根目录的turbo.json中,让server的build任务依赖database的build任务,保证编译顺序:
{ "$schema": "https://turbo.build/schema.json", "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] } } }
^build表示依赖所有上游依赖包的build任务,确保database先完成编译
4. 验证server的TypeScript配置
确保server/tsconfig.json能正确解析database包的类型:
{ "compilerOptions": { "baseUrl": ".", "paths": { "database": ["../database"] } } }
5. 重新构建并测试
执行以下命令清理并重新构建:
npx turbo clean npm install npx turbo build
额外排查点
- 检查
database/dist目录是否生成了index.js和index.d.ts文件 - 确认
database/node_modules/.prisma/client目录存在且包含Prisma Client的代码 - 启动server时,确保
database包的dist文件已被正确引入到server的运行环境中
内容的提问来源于stack exchange,提问作者Josh Paveley
相关产品推荐
相关产品推荐

