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

Turborepo集成Prisma与NestJS时出现模块未找到错误

解决Turborepo Monorepo中Prisma共享包的模块找不到错误

问题根源

错误ERR_MODULE_NOT_FOUND: Cannot find module '/.../packages/database/src/client'的核心原因是:你的database共享包中,src/index.ts尝试导入的./client文件不存在——这个文件应该是Prisma生成的Client代码,但尚未生成或生成路径配置错误。

分步解决方案

1. 确认Prisma生成路径配置

打开packages/database/prisma/schema.prisma,验证generator client的output路径是否指向src/client:

generator client {
  provider = "prisma-client-js"
  output   = "../src/client" // 必须确保此路径正确,指向database包的src/client目录
}

2. 手动生成Prisma Client

进入packages/database目录,执行生成命令:

npx prisma generate

执行完成后,src/client目录会生成Prisma Client的代码文件,解决模块缺失问题。

3. 配置Turborepo自动触发生成

为了避免每次启动都手动生成,在根目录的turborepo.json中添加任务依赖:

{
  "pipeline": {
    "dev": {
      "dependsOn": ["^prisma:generate"]
    },
    "prisma:generate": {
      "outputs": ["packages/database/src/client/**"]
    }
  }
}

同时在packages/database/package.json中添加对应脚本:

{
  "scripts": {
    "prisma:generate": "prisma generate"
  }
}

这样启动开发环境时,Turborepo会自动先执行Prisma Client生成任务。

4. 验证导入语句正确性

确保packages/database/src/index.ts的导入逻辑正确:

import './client';
export * from '@prisma/client';

额外检查项

  • 确认packages/database/package.json的type字段与项目模块规范一致(ES模块设为module,CommonJS则移除或设为commonjs)
  • 检查NestJS项目fm-api中导入共享包的语句是否正确,例如:import { PrismaClient } from '@fm/database'(需匹配database包的name字段)

内容的提问来源于stack exchange,提问作者Seyrinian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:20