Next.js API路由报错TypeError: res.redirect is not a function的解决咨询
解决Next.js API路由中
res.redirect is not a function的报错 我之前也碰到过几乎一模一样的问题,给你梳理下原因和可行的解决办法:
报错核心原因
这个错误主要来自两个常见场景:
- Next.js版本过低:API路由里的
res.redirect()这类响应助手方法,是Next.js 12.x版本才正式加入的功能。如果你的项目还在使用11.x或更早的版本,res对象本身就没有这个内置方法,自然会抛出类型错误。 - 状态码使用不规范:虽然这不是触发报错的直接原因,但你用
200状态码来做重定向不符合HTTP规范——重定向必须使用3xx系列的状态码(比如302临时重定向、301永久重定向)。
具体解决方案
方案1:升级Next.js版本(推荐)
如果项目没有版本兼容的限制,直接把Next.js升级到12.x或更高版本即可:
npm install next@latest # 或者用yarn yarn add next@latest
升级后,修改你的API路由代码,把状态码改成合法的3xx值:
// pages/api/paiement-accepte.js export default function handler(req, res) { // 使用302临时重定向(可根据需求换成301永久重定向) res.redirect(302, "http://www.google.com"); }
方案2:手动实现重定向(无需升级版本)
如果暂时无法升级Next.js,你可以绕过响应助手,手动设置HTTP响应头和状态码来实现重定向:
// pages/api/paiement-accepte.js export default function handler(req, res) { res.writeHead(302, { Location: "http://www.google.com" }); res.end(); }
两种方案都能解决你的问题,根据自己项目的实际情况选择就行~
内容的提问来源于stack exchange,提问作者Eloi
相关产品推荐
相关产品推荐

