Next.js部署Vercel报错:/api/favourites/[drivingSchoolId]页面数据收集失败
Next.js部署Vercel时/api/favourites/[drivingSchoolId]构建错误排查
部署Next.js应用到Vercel时,遇到特定API路由的构建错误:/api/favourites/[drivingSchoolId]页面数据收集失败,构建进程以代码1退出。相关错误日志如下:
at fa (/vercel/path0/node_modules/@prisma/client/runtime/library.js:33:69) at new t (/vercel/path0/node_modules/@prisma/client/runtime/library.js:131:739) at 13543 (/vercel/path0/.next/server/app/api/favourites/[drivingSchoolId]/route.js:1:3921) at t (/vercel/path0/.next/server/webpack-runtime.js:1:128) at 91782 (/vercel/path0/.next/server/app/api/favourites/[drivingSchoolId]/route.js:1:2942) at t (/vercel/path0/.next/server/webpack-runtime.js:1:128) at 40100 (/vercel/path0/.next/server/app/api/favourites/[drivingSchoolId]/route.js:1:1267) at t (/vercel/path0/.next/server/webpack-runtime.js:1:128) at t (/vercel/path0/.next/server/app/api/favourites/[drivingSchoolId]/route.js:1:4006) at /vercel/path0/.next/server/app/api/favourites/[drivingSchoolId]/route.js:1:4041 { clientVersion: '5.16.2', errorCode: undefined } > Build error occurred Error: Failed to collect page data for /api/favourites/[drivingSchoolId] at /vercel/path0/node_modules/next/dist/build/utils.js:1268:15 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { type: 'Error' } Error: Command "npm run build" exited with 1
以下是具体排查和解决步骤:
- 检查Prisma环境变量:在Vercel项目的环境变量面板中,确认数据库连接字符串等Prisma依赖的变量已正确配置,且勾选在构建时可用选项,避免构建阶段无法访问数据库。
- 验证API路由逻辑:查看/api/favourites/[drivingSchoolId]/route.js中的代码,确保没有在构建阶段执行依赖动态参数的操作(比如未处理的drivingSchoolId在构建时无法获取,导致Prisma查询失败)。
- 更新Prisma客户端:本地执行
npx prisma generate生成最新客户端文件,并修改package.json的build命令为prisma generate && next build,确保Vercel构建时自动生成客户端。 - 确认路由渲染类型:App Router中的API路由默认是服务器端运行,无需静态生成。如果错误使用了
generateStaticParams,需移除该逻辑,避免构建时尝试预渲染动态API路由。 - 本地复现调试:在本地执行
npm run build,复现错误后,通过添加日志或调试工具定位Prisma调用的具体问题(比如数据库连接失败、查询语法错误等)。
内容的提问来源于stack exchange,提问作者Wojnys
相关产品推荐
相关产品推荐

