【问题标题】:Next.js API timeout on VercelVercel 上的 Next.js API 超时
【发布时间】:2021-06-14 05:33:55
【问题描述】:

我刚开始使用 Next.js 并试图在 API 路径中设置一个函数。在本地,一切正常,但在我部署到 Vercel 后,调用函数时总是超时。但是,我在函数内部发送的将联系人添加到电子邮件列表的请求是成功的。

这是我的代码。我有一种感觉,它可能与最后两行有关,但我不确定。如有任何帮助,我将不胜感激。

var http = require("https");

export default (req, res) => {
  const body = JSON.parse(req.body);

  var options = {
    method: "PUT",
    hostname: "api.sendgrid.com",
    port: null,
    path: "/v3/marketing/contacts",
    headers: {
      authorization: `Bearer ${process.env.SENDGRID_API_KEY}`,
      "content-type": "application/json",
    },
  };

  var callback = (response) => {
    var chunks = [];

    response.on("data", function (chunk) {
      chunks.push(chunk);
    });

    response.on("end", function () {
      var body = Buffer.concat(chunks);
      console.log(body.toString());
    });
  };

  var data = JSON.stringify({
    list_ids: ["1e4e78b5-3aa4-4cdd-bf81-d1f7a3014098"],
    contacts: [
      {
        email: body.email,
      },
    ],
  });

  var request = http.request(options, callback);

  request.write(data)

  request.end();
  
  res.status(204).json({ status: "Ok" });
};

【问题讨论】:

    标签: next.js httprequest vercel


    【解决方案1】:

    我在 Vercel 上遇到了同样的问题。最终发现 Vercel 不喜欢 204 状态码。

    改变这一行

      res.status(204).json({ status: "Ok" });
    

    到

      res.status(200).json({ status: "Ok" });
    

    它应该可以工作。

    【讨论】:

    • 听起来很有趣。我会试一试并报告。
    猜你喜欢
    • 2021-09-21
    • 2021-05-31
    • 2022-12-17
    • 1970-01-01
    • 2021-06-27
    • 2022-08-13
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多