在Vercel部署Nest.js项目时Prisma Client过期问题求助
Nest.js + Prisma 部署Vercel时Prisma Client过期问题解决
问题原因
你当前的vercel.json配置存在问题:当指定src: "src/main.ts"并使用@vercel/node构建器时,Vercel会直接编译这个源码文件,不会自动执行package.json里的build脚本,导致你写的npx prisma generate根本没运行,自然无法生成最新的Prisma Client,就出现了日志里的过期提示。
解决方案
修改vercel.json配置,让Vercel执行你的build脚本,并指向编译后的产物:
{ "version": 2, "builds": [ { "src": "package.json", "use": "@vercel/node", "config": { "command": "npm run build" } } ], "routes": [ { "src": "/(.*)", "dest": "dist/main.js", "methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"] } ] }
关键修改点:
- builds部分:将
src改为package.json,并通过config.command指定执行npm run build,这样Vercel会先跑你定义的build脚本(包含prisma generate),再处理产物。 - routes部分:
dest从src/main.ts改成dist/main.js,因为nest build会把编译后的代码输出到dist目录,部署时应该用编译后的产物而非源码。
额外注意事项
- 如果
prisma在你的devDependencies里,需要在Vercel项目的Settings → General → Build & Development Settings中,把Install Command改成npm install --include=dev,否则构建时找不到prisma命令。 - 也可以直接把
prisma移到dependencies中,避免安装依赖时的权限问题。
内容的提问来源于stack exchange,提问作者Mohammad ARZ
相关产品推荐
相关产品推荐

