Next.js 14 App Router部署Vercel后部分API路由POST请求返回405错误
针对你遇到的本地正常、部署Vercel后/api/mini/describe-image路由返回405的问题,可按以下步骤排查:
确认Vercel上的路由文件完整性与正确性
登录Vercel项目控制台,进入Source页面,检查api/mini/describe-image/route.ts是否存在,且内容与本地完全一致。重点确认是否正确导出了大写的POST函数(大小写敏感,小写post或拼写错误会导致无法识别),示例正确导出:export async function POST(request: Request) { // 处理逻辑 }检查路径大小写匹配
Vercel部署环境对路径大小写敏感,本地系统(如Windows)可能不区分。确认本地文件路径的大小写(比如是否是Mini而非mini)与请求路径/api/mini/describe-image完全一致,路径不匹配会导致Vercel找不到对应路由,返回405。清除Vercel缓存并重新部署
Vercel的部署缓存可能导致旧路由配置残留。在Vercel部署页面,选择Redeploy并勾选Clear build cache,重新部署项目,确保最新的路由文件被正确编译部署。查看Vercel部署日志
进入Vercel项目的Deployments页面,查看对应部署的日志,检查是否存在api/mini/describe-image/route.ts的编译错误、函数加载失败等信息,这些问题会导致路由无法正常注册。直接测试API路由
用Postman或curl直接向Vercel部署的https://[你的域名]/api/mini/describe-image发送POST请求,排除前端代码的请求问题。如果直接请求也返回405,说明问题出在路由本身;如果正常,则检查前端请求的路径、方法是否存在隐性错误。检查边缘运行时配置(若使用)
如果该路由配置了边缘运行时(export const runtime = 'edge'),确认配置是否正确,是否符合Vercel边缘函数的限制(如内存、执行时间),配置错误可能导致路由无法正常初始化。
内容的提问来源于stack exchange,提问作者Zack Amin

