NextJs - 页面中 API 文件夹中的函数给出“res.status 不是函数”错误

Posted

技术标签:

【中文标题】NextJs - 页面中 API 文件夹中的函数给出“res.status 不是函数”错误【英文标题】:NextJs - Function in API folder in pages gives 'res.status is not a function' error 【发布时间】:2021-10-05 19:53:00 【问题描述】:

我正在使用 NextJs,我正在尝试创建一个将数据发送到 MailChimp 的订阅表单。但是,我收到错误提示

res.status 不是函数

这个文件在我的pages/api 目录中。可能出了什么问题?

    import  subscribe  from "../../lib/api";
const request = require("request");

export default async function subscribeWithEmail(req, res) 
  const  email, js  = req.body;

  const mcData = 
    members: [
      
        email_address: email,
        status: "pending",
      ,
    ],
  ;
  const mcDataPost = JSON.stringify(mcData);
  const options = 
    url: "https://us6.api.mailchimp.com/3.0/lists/SECRET",
    method: "POST",
    headers: 
      Authorization: "auth APIKEY",
    ,
    body: mcDataPost,
  ;

  if (email) 
    request(options, (err, res, body) => 
      console.log(res);
      if (err) 
        res.json( error: err );
       else 
        if (js) 
          res.status(200).send( message: "yay" );
         else 
          res.redirect("/");
        
      
    );
   else 
    res.status(404).send( message: "Failed" );
  
  //   res.status(200).json(data);
  return res.status(200);

【问题讨论】:

你有多个res.status调用,哪一行会抛出错误? 【参考方案1】:

您正在隐藏您的初始 res 变量。

    // you have another res here, which has nothing to do with Next.js res, but it is overriding it
    // So you need to rename it to something else, for example to "response"
    request(options, (err, response, body) => 
      console.log(response);
      if (err) 
        res.json( error: err );
       else 
        if (js) 
          res.status(200).send( message: "yay" );
         else 
          res.redirect("/");
        
      
    );

【讨论】:

以上是关于NextJs - 页面中 API 文件夹中的函数给出“res.status 不是函数”错误的主要内容,如果未能解决你的问题,请参考以下文章

NextJS getStaticProps 没有将返回的道具传递给页面

如何从 Nextjs 中的另一个页面将附加数据传递给 getserversideprops?

Next JS 中的页面预渲染发生错误 [重复]

使用 NextJS API 发送文件作为响应

使用 nextjs 应用程序中的 axios 将文件上传到 graphql api 服务器时我错在哪里?

NextJS 部署到 Vercel:找不到 404 页面