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

遵循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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 02:22:43