遵循NestJs Prisma文档遇模块找不到及exports未定义错误求助
问题分析与解决方案
核心问题
- 模块导入路径不匹配:
generated/prisma路径不存在,根源是Prisma生成器的输出目录配置与文档示例不一致 - ES模块与CommonJS冲突:
exports is not defined错误是因为生成的Prisma客户端代码为CommonJS格式,但NestJS项目采用ES模块规范
分步解决
1. 修正Prisma生成器配置(适配Prisma 7+)
在prisma/schema.prisma文件中,调整生成器的输出路径并指定ES模块格式:
generator client { provider = "prisma-client-js" output = "./generated/prisma/client" // 与IDE建议的导入路径对应 generatorConfig = { outputFormat = "esm" // 生成ES模块格式代码,避免模块冲突 } }
执行重新生成命令:
npx prisma generate
之后使用正确的导入路径(根据你的文件结构调整相对路径):
import { User as UserModel, Post as PostModel } from '../prisma/generated/prisma/client';
2. 解决模块规范冲突
若仍出现exports is not defined错误,检查以下配置:
- 确保
package.json中包含:"type": "module" - 调整
tsconfig.json的编译选项:{ "compilerOptions": { "module": "ESNext", "moduleResolution": "NodeNext", "target": "ES2022", "esModuleInterop": true } } - 重新编译项目:
npm run build
3. 配置Prisma 7必填的prisma.config.ts
在项目根目录创建prisma.config.ts:
import { defineConfig } from '@prisma/client/generator-config'; export default defineConfig({ generators: [ { name: 'client', output: './prisma/generated/prisma/client', config: { outputFormat: 'esm', }, }, ], });
然后在schema.prisma中关联该配置:
generator client { provider = "prisma-client-js" config = "../prisma.config.ts" }
验证
完成所有配置后,重新执行npx prisma generate和npm run start:dev,即可正常运行项目且模块导入无报错。
内容的提问来源于stack exchange,提问作者sodiumfish
相关产品推荐
相关产品推荐

