Next.js项目Vercel部署后登录报405错误求助
核对API路由的请求方法定义
确认登录接口的路由文件(如app/api/auth/login/route.ts或pages/api/auth/login.ts)正确处理POST请求:- App Router需导出
POST函数,不能漏写或错写成GET/其他方法; - Pages Router要判断
req.method === 'POST',否则返回405响应。Vercel会严格匹配路由声明的请求方法,定义错误直接触发405。
- App Router需导出
检查前端请求的方法是否正确
打开浏览器DevTools的Network面板,查看登录请求的Request Method是否为POST。前端表单的method属性、JS请求代码里的方法如果误设为GET,本地可能因调试环境未暴露问题,但Vercel环境会直接返回405。排查Vercel路由配置
查看项目根目录的vercel.json,确认重写/重定向规则没有把登录API路径指向仅支持GET的静态资源或错误端点。比如错误的重写规则将/api/auth/login映射到静态页面,会导致POST请求被拦截返回405。验证Vercel环境下的客户端初始化
虽然本地正常,但Vercel的环境变量可能配置错误,导致API路由里的Supabase/Prisma客户端初始化失败,进而让路由逻辑未正确处理请求。可以在API路由中添加console.log输出客户端状态,到Vercel的函数日志里查看是否初始化成功。禁用API路由的缓存策略
若使用Next.js App Router,API路由默认可能启用缓存,会干扰POST请求的处理。在路由文件顶部添加export const dynamic = 'force-dynamic'强制禁用缓存,确保请求走实时逻辑。查看Vercel函数执行日志
登录Vercel控制台,进入项目的Functions日志页面,查看登录请求的详细日志。日志会显示请求方法、路径、函数执行的报错信息,能直接定位是路由未匹配还是函数内部逻辑异常导致的405。
内容的提问来源于stack exchange,提问作者Wise Bird

