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

升级Prisma 7后NestJS项目启动报错:模块未找到

Prisma v7升级后NestJS启动报错:ERR_MODULE_NOT_FOUND找不到app.module

我用NestJS v11.1.6做后端,搭配Prisma和NextJS前端,把Prisma从v6升级到v7后,项目构建无报错,但启动时触发以下错误:

[ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/Projects/project-example/backend/dist/src/app.module' imported from /Users/Projects/project-example/backend/dist/src/main.js

已按照迁移指南更新了prisma.config.ts:

import "dotenv/config";
import { defineConfig, env } from "prisma/config";

export default defineConfig({
  schema: "prisma/schema.prisma",
  migrations: {
    path: "prisma/migrations",
  },
  datasource: {
    url: env("DATABASE_URL"),
  },
});

同时更新了tsconfig.json:

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "node",
    "declaration": false,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "ES2023",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "skipLibCheck": true,
    "strict": true,
    "esModuleInterop": true
  }
}

可能的解决方法:

  • 添加ESM模式标识
    在项目根目录的package.json中加入"type": "module",明确告知Node.js当前项目采用ESM模块规范:

    {
      "type": "module",
      // 其他原有配置...
    }
    
  • 调整模块解析策略
    将tsconfig.json中的moduleResolution从node改为nodenext或bundler,匹配ESNext模块的解析规则:

    {
      "compilerOptions": {
        "module": "ESNext",
        "moduleResolution": "nodenext",
        // 其他原有配置...
      }
    }
    
  • 优化TypeScript编译配置
    在tsconfig.json的compilerOptions中补充以下配置,确保生成的导入语句符合ESM要求:

    {
      "compilerOptions": {
        // 原有配置...
        "forceConsistentCasingInFileNames": true,
        "resolveJsonModule": true,
        "moduleSuffixes": [".js", ".ts"]
      }
    }
    
  • 清理旧构建文件并重新编译
    删除dist目录后重新执行构建,避免旧的CommonJS文件干扰:

    rm -rf dist
    npm run build
    
  • 重新生成Prisma客户端
    Prisma v7对客户端结构做了调整,重新生成确保依赖匹配:

    npx prisma generate
    

补充说明:

Prisma v7默认切换为ESM优先模式,而NestJS在ESM模式下对模块导入的后缀要求更严格。如果上述步骤未解决问题,可以检查dist/src/main.js中的导入语句,确认app.module的路径是否带有.js后缀——若没有,可手动调整源码中的导入(比如import { AppModule } from './app.module.js'),更推荐通过tsconfig配置让TypeScript自动处理该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 18:42:17