Prisma 中文文档 下载 App

生成 Prisma Client:prisma generate 到底做了什么

一条命令,发生了什么

npx prisma generate

这条命令读取 prisma/schema.prisma,然后把一套完整的 TypeScript 类型定义和查询 API 生成到 node_modules/.prisma/client/ 目录里。

生成的内容大致包括:

生成后怎么用

在你的应用代码里导入:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

注意你导入的是 @prisma/client 包,不是直接从 node_modules/.prisma/client/ 里导入。@prisma/client 这个 npm 包是 Prisma 在安装时就注册好的,它会指向生成的代码。

什么时候需要重新 generate

每当你修改了 schema.prisma(新增 model、改字段类型、加 relation 等),都需要重新跑一遍 generate 让 Prisma Client 感知到这些变化。典型的流程是:

# 1. 改了 schema.prisma 之后
npx prisma migrate dev --name added-new-field
# migrate dev 在应用迁移的同时,也会自动触发 generate

# 或者,只想重新生成 Client 而不动数据库
npx prisma generate

实际上,npm install @prisma/client 时也会自动跑一次 generate。之后每次 Schema 变化,你需要手动触发。

生成失败了怎么办

常见失败原因:

现象原因解决
Schema validation errorSchema 文件语法错误VS Code 里装 Prisma 扩展,红色波浪线会提前提示
Introspection failed数据库连不上或结构对不上检查 DATABASE_URL、确认数据库可达
The type ... could not be found生成的代码版本与应用里导入的类型不匹配确保 prisma CLI 和 @prisma/client 版本号一致
生成的类型没更新node_modules 里有缓存删掉 node_modules/.prisma 目录后重新 npx prisma generate

版本一致性

prisma CLI 和 @prisma/client 的版本号必须严格一致。如果 CLI 是 5.18.0 而 @prisma/client 是 5.17.0,可能出现奇怪的类型错误。

推荐用 npm install prisma@latest @prisma/client@latest 或锁版本 prisma@5.18.0 @prisma/client@5.18.0。

VS Code 扩展

强烈建议安装 Prisma 的 VS Code 扩展。它提供:

这个扩展在 Schema 复杂起来之后能大大降低出错率。