Next.js API Vercel 超时
Next.js API timeout on Vercel
我刚开始使用 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" });
};
我 运行 在 Vercel 上遇到了同样的问题。最终发现 Vercel 不喜欢 204 状态码。
更改此行
res.status(204).json({ status: "Ok" });
至
res.status(200).json({ status: "Ok" });
它应该可以工作。
我刚开始使用 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" });
};
我 运行 在 Vercel 上遇到了同样的问题。最终发现 Vercel 不喜欢 204 状态码。
更改此行
res.status(204).json({ status: "Ok" });
至
res.status(200).json({ status: "Ok" });
它应该可以工作。