Prisma 中文文档 下载 App

Client 未生成或过期:generate 的常见坑

现象

你改了 schema.prisma,跑了 prisma generate,但代码里还是报旧类型错误、类型提示还是旧的、或者 import { PrismaClient } from '@prisma/client' 报模块找不到。

排查步骤

第一步:确认版本号一致

# 检查 prisma CLI 和 @prisma/client 的版本
npm list prisma @prisma/client

# 输出应该是同版本,比如都是 5.18.0

如果两个版本不一样,必须统一:

npm install prisma@latest @prisma/client@latest

第二步:清理再重新生成

# 删掉旧的生成产物
rm -rf node_modules/.prisma

# 重新 generate
npx prisma generate

Windows 上:

Remove-Item -Recurse -Force node_modules\.prisma
npx prisma generate

第三步:确认 Schema 文件位置

# 看看 Prisma 实际用了哪个 Schema
npx prisma generate
# 输出里应该有:Prima Schema loaded from prisma/schema.prisma

如果它找不到 Schema 或用了错误的 Schema,用 --schema 显式指定:

npx prisma generate --schema=./path/to/schema.prisma

第四步:重启 TypeScript 服务器

VS Code 的 TypeScript 服务器可能缓存了旧类型。手动重启:

  1. Ctrl+Shift+P 打开命令面板
  2. 输入 "TypeScript: Restart TS Server"
  3. 回车

或者直接重启 VS Code(最彻底)。

第五步:检查 output 配置

如果你在 schema.prisma 的 generator 里自定义了 output:

generator client {
  provider = "prisma-client-js"
  output = "../custom-client-path"
}

那 Prisma 不会生成到 node_modules/.prisma/client,而是生成到你指定的位置。这种情况下你不能 import { PrismaClient } from '@prisma/client',要从自定义路径导入。

绝大多数项目不需要自定义 output——恢复默认行为就行。

常见原因速查表

现象原因解决
类型还是旧的TypeScript 服务器缓存重启 VS Code 或 TS Server
@prisma/client 报模块找不到没装 @prisma/client 包npm install @prisma/client(装完自动 generate 一次)
新 model 没有 PrismaClient 方法generate 没跑成功手动跑 npx prisma generate,看报错
类型不匹配(Schema 改了但类型没变)版本不一致npm install prisma@X @prisma/client@X 锁定同版本
PrismaClient 方法签名变了升级了大版本(如 v5→v6)查升级指南,API 可能有 breaking change
生成很慢Schema 复杂、model 多正常现象,Prisma 7 比 5 快 70%

终极方案:全清重建

如果以上都试了还是不行:

# 1. 删掉所有依赖和生成产物
rm -rf node_modules
rm -rf node_modules/.prisma  # 确保清干净
rm -rf prisma/migrations      # 原型阶段可以清

# 2. 重装
npm install
npm install prisma --save-dev
npm install @prisma/client

# 3. 重新 generate
npx prisma generate

预防