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

Vercel生产构建失败:PrismaClient不存在companies属性,本地构建正常

解决Vercel构建时Prisma Client找不到companies属性的问题

问题场景

使用Next.js 13.0.3、TypeScript 4.9.3、Prisma ^4.6.1搭建MongoDB项目,本地构建正常,但Vercel生产构建时报错:

Type error: Property 'companies' does not exist on type 'PrismaClient<PrismaClientOptions, never, RejectOnNotFound | RejectPerOperation | undefined>'.

71 |     },
72 |     companies: async () => {
73 |       const companies = await prisma.companies.findMany();
74 |       return companies;
75 |     },
76 |   },

本地TypeScript可正常识别companies为Prisma属性,添加该模型前生产构建正常,当前schema定义:

model companies {
  id   String @id @default(auto()) @map("_id") @db.ObjectId
  v    Int?   @map("__v")
  name String
}

解决方案

1. 给package.json添加postinstall命令

Vercel默认不会自动生成Prisma Client,需在package.json的scripts中添加:

"scripts": {
  "postinstall": "prisma generate"
}

这样每次部署时,依赖安装完成后会自动生成适配当前schema的Prisma Client,确保生产环境的Client包含最新模型。

2. 固定Prisma版本

避免^4.6.1导致本地与Vercel安装的Prisma版本不一致,将package.json中的prisma和@prisma/client版本固定为4.6.1:

"dependencies": {
  "@prisma/client": "4.6.1"
},
"devDependencies": {
  "prisma": "4.6.1"
}

3. 清除Vercel构建缓存

Vercel的缓存可能复用旧的Prisma Client,可通过两种方式强制刷新:

  • 部署时添加环境变量VERCEL_CACHE=0
  • 在Vercel项目的构建设置中勾选"Disable Build Cache",完成一次构建后再取消勾选

4. 验证模型命名映射(可选)

Prisma默认会将模型名转换为小驼峰格式,但如果模型是复数,需确认Client生成的属性名是否匹配。不过本地正常说明命名没问题,此步骤仅作排查备用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:10:36