Nextjs出现res.status.json() is not a function报错如何解决
错误根因
Next.js API路由的响应对象方法调用规则和你写的逻辑不匹配:res.status本身是一个需要传入HTTP状态码作为参数的函数,你没有加括号传参调用它,直接访问status函数上的json属性,这个属性根本不存在,值为undefined,当成函数调用自然会抛出is not a function的错误。
排查流程
- 第一步根据报错栈定位出错行:错误就出在
res.status.json(...)这一行 - 核对Next.js API路由的响应方法规则:
- 直接返回JSON响应且默认用200成功状态码时,直接调用
res.json(待返回数据)即可 - 需要自定义HTTP状态码时,要先调用
res.status(具体状态码),这个方法执行完会返回响应对象实例,才能链式调用.json(待返回数据)
- 直接返回JSON响应且默认用200成功状态码时,直接调用
- 对比现有代码:
res.status没有加调用括号、没有传入必填的状态码参数,本质是在访问函数对象的不存在的属性,完全不符合调用规范
修复方案
两种写法都可正常运行,按需选择即可:
- 不需要自定义状态码,直接返回默认200响应:
export default function handler(req, res) { res.json([234400, 721302, 110003, 560017]); }
- 需要显式指定状态码(比如明确标注200成功、后续扩展场景返回4xx/5xx错误码):
export default function handler(req, res) { res.status(200).json([234400, 721302, 110003, 560017]); }
避坑提示:所有链式调用的场景都要确认前一个方法执行后返回对应实例,不要漏写调用括号和必填参数。
内容的提问来源于stack exchange,提问作者front_dev_j
相关产品推荐
相关产品推荐

