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

SWC未编译Prisma目录致Nest.js项目运行报错求助

SWC 不编译同级 Prisma 目录的原因及解决方法

核心原因

  1. NestJS CLI 编译范围限制:使用 nest start -b swc 时,Nest CLI 默认仅将 src 目录作为编译目标,不会自动处理同级的 prisma 目录。而默认 TypeScript 编译器(tsc)可能因未设置 include 时的隐式规则,或 Nest CLI 对 tsc 的特殊处理,自动纳入 prisma 目录的文件。
  2. TSConfig 未明确指定编译范围:当前 tsconfig.json 缺少 include 字段,SWC 会严格遵循 TSConfig 的规则,若未明确包含 prisma/**/*,则不会处理该目录下的 TypeScript 文件。
  3. SWC 配置未扩展编译路径:.swcrc 中未配置额外的编译入口或路径规则,无法告知 SWC 需要处理 prisma 目录下的文件。

解决方法

方法1:修改 TSConfig 包含 Prisma 目录

在 tsconfig.json 和 tsconfig.build.json 中添加 include 配置,确保 SWC 识别需要编译的文件范围:

{
  "compilerOptions": {
    // 保留现有配置...
  },
  "include": ["src/**/*", "prisma/**/*"],
  "exclude": ["node_modules", "dist"]
}

修改后重新运行 nest start -b swc,SWC 会同时编译 src 和 prisma 目录,保持原结构输出到 dist。

方法2:直接使用 SWC CLI 编译

绕过 Nest CLI 的默认限制,直接调用 SWC CLI 编译目标目录:
更新 package.json 的脚本:

"scripts": {
  "build:swc": "swc src prisma -d dist",
  "start:swc": "dotenv -e .dev.env -- bun run dist/main.js"
}

执行 npm run build:swc 会将 src 和 prisma 目录的文件编译到 dist 下,保持同级结构;npm run start:swc 启动编译后的项目。

方法3:调整 Nest CLI 配置

若需继续使用 nest start -b swc,可在 nest-cli.json 中配置 rootDirs 扩展根目录范围:

{
  "$schema": "https://json.schemastore.org/nest-cli",
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "rootDirs": ["src", "prisma"],
    "builder": "swc",
    "typeCheck": true
  }
}

同时确保 TSConfig 的 include 包含 prisma/**/*,这样 Nest CLI 会引导 SWC 处理指定的根目录文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:18:30