prisma 构建时在 @prisma/client/runtime/library.d.ts 报 typescript 类型推断语法错误(ts1005),根本原因通常是 node.js 版本过低,不支持 typescript 5.0+ 所需的条件类型语法(如 infer s extends object 后续的可选链/新泛型推导上下文),升级 node.js 至 18.18.2 或更高版本即可解决。
prisma 构建时在 @prisma/client/runtime/library.d.ts 报 typescript 类型推断语法错误(ts1005),根本原因通常是 node.js 版本过低,不支持 typescript 5.0+ 所需的条件类型语法(如 infer s extends object 后续的可选链/新泛型推导上下文),升级 node.js 至 18.18.2 或更高版本即可解决。
该错误典型表现为:
node_modules/@prisma/client/runtime/library.d.ts:1161:35 - error TS1005: '?' expected.
1161 | select: infer S extends object;
^
1162 | } & Record<string unknown> | {
1163 | include: infer I extends object;</string>
尽管项目代码本身无误、开发环境运行正常,但执行 npx prisma generate 或构建(如 tsc、Vite/Next.js 构建)时触发此报错——这是因为 Prisma Client 的运行时类型定义(自 v5.0+ 起)已采用更严格的 TypeScript 条件类型语法,而旧版 Node.js(如 16.x 或早期 18.x)附带的 TypeScript 版本或其解析器对 infer 在复杂联合/映射类型中的行为支持不完整。
✅ 推荐解决方案:升级 Node.js 至 18.18.2 或更高版本(如 18.20.2、20.x)
使用 nvm 快速切换(macOS/Linux):
# 安装并启用 Node.js 18.18.2 nvm install 18.18.2 nvm use 18.18.2 # 验证版本 node -v # 应输出 v18.18.2 npm list typescript # 确保项目或全局 TypeScript ≥ 5.0
Windows 用户可使用 Node.js 官方安装包 或 nvm-windows 完成升级。
⚠️ 注意事项:
- 不要手动修改 node_modules/@prisma/client/... 中的 .d.ts 文件——这是自动生成的,修改会被覆盖且无法根本解决问题;
- 升级后请清空缓存并重新生成 Prisma Client:
npx prisma generate --skip-generate npx prisma generate # 强制重生成
- 若使用 pnpm/yarn,请同步更新其 store 缓存(如 pnpm store prune);
- 检查 tsconfig.json 中 compilerOptions.target 是否设为 ES2020 或更高(Prisma v5+ 推荐 ES2022)。
? 延伸提示:该问题常见于 CI 环境(如 GitHub Actions)。若使用 .node-version 或 .nvmrc,请确保其中指定的版本 ≥ 18.18.2;CI 配置中应显式声明 Node.js 版本,例如 GitHub Actions 中:
- uses: actions/setup-node@v4
with:
node-version: '18.18.2'
升级后,prisma generate 和 TypeScript 构建将顺利通过,类型推断恢复正常,不再出现 TS1005 语法错误。










