Express+Prisma+TypeScript开发中遇Property 'job'类型错误求助
解决PrismaClient中不存在'job'属性的类型错误
问题详情
我使用Express.js作为后端,搭配Prisma操作数据库,用TypeScript开发,实践时出现类型错误:Property 'job' does not exist on type 'PrismaClient<PrismaClientOptions, never, RejectOnNotFound | RejectPerOperation | undefined>'
错误出现在await prisma.job.create()和await prisma.job.findMany()代码行。
我的后端代码:
import { PrismaClient } from '@prisma/client'; import app from './app'; const prisma = new PrismaClient(); app.post('/job', async (req, res) => { const job = await prisma.job.create({ data: req.body }); res.json(job); }); app.get('/', async (req, res) => { const job = await prisma.job.findMany(); res.json(job); });
我的prisma.schema内容:
generator client { provider = "prisma-client-js" } datasource db { provider = "sqlserver" url = env("DATABASE_URL") } model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[] } model Post { id Int @id @default(autoincrement()) title String content String? published Boolean @default(false) author User @relation(fields: [authorId], references: [id]) authorId Int } model Job { id Int @id @default(autoincrement()) title String location String salary String }
解决方法
核心原因
Prisma Client是基于你的schema文件自动生成的,添加Job模型后,必须重新生成客户端代码,否则TypeScript无法识别新模型对应的属性。
步骤
重新生成Prisma Client
在终端执行命令:npx prisma generate该命令会根据当前的schema文件更新
@prisma/client的类型定义和客户端逻辑。重启TypeScript语言服务(可选)
如果编辑器仍报错,可重启TypeScript服务:- VS Code中按下
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入TypeScript: Restart TS Server并执行。
- VS Code中按下
验证生成结果
检查node_modules/@prisma/client目录是否更新,或查看生成的index.d.ts文件中是否包含Job模型的类型定义。
额外提示
- 每次修改schema中的模型后,都需要运行
npx prisma generate更新客户端。 - 若需同步数据库结构,开发环境下执行
npx prisma migrate dev将模型变更应用到数据库。
内容的提问来源于stack exchange,提问作者Bablu Ahmed
相关产品推荐
相关产品推荐

