You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS API路由报TypeError: res.status is not a function错误

错误根因

Next.js Pages Router 规范中,API路由的默认导出处理函数必须按固定顺序接收两个参数:

  • 第一个参数是请求对象req,对应类型NextApiRequest
  • 第二个参数是响应对象res,对应类型NextApiResponse

你的代码仅声明了1个参数,运行时这个位置拿到的实际是请求对象req,请求对象上不存在status方法,因此抛出TypeError: res.status is not a function错误,该问题和API文件是否放在pages/api目录下无关。同时代码缺失了NextApiRequest的类型导入,存在TypeScript类型校验隐患。

修复方案

调整处理函数的参数顺序,补全缺失的类型导入即可,修正后完整代码如下:

import { NextApiRequest, NextApiResponse } from 'next'
import { client } from '../../lib/sanity/sanity'

export default async function getFeed(req: NextApiRequest, res: NextApiResponse) {
  try {
    const feeds = await client.fetch(
      `*[_type == "post"]
      {
        _createdAt,
        title,
        description,
        picture,
        postDocId,
        postedByUserId,
        postedByUserName,
        postedByUserImage
      }`
    )
    return res.status(200).json({ feeds })
  } catch (error) {
    return res.status(500).json({ message: "Couldn't get post feed:\n", error })
  }
}

可选优化:可以在接口逻辑最开头增加请求方法校验,仅允许指定请求方式访问接口,示例代码:

if (req.method !== 'GET') {
  return res.status(405).json({ message: '请求方法不被允许' })
}

内容的提问来源于stack exchange,提问作者Ron Bis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 12:48:16