我正在开发一个 next.js 项目,当在本地运行我的项目时,我能够将电子邮件插入表单并通过他们的 API 成功将其发布到 MailChimp。在生产中,相同的代码不起作用,但我已经确认生产具有:
{URL}/subscribe
返回200问题似乎是在调用 API 路由之后发生的后续 API 调用。我迷路了,很想听听你的见解。
pages/api/subscribe.js
const axios = require('axios');
const LIST_ID = 'b29d6f1e61'; // MailChimp Audience
const key = `Basic ${Buffer.from(`apikey:${process.env.MAILCHIMP_API_KEY}`).toString('base64')}`;
const subscribe = ( email ) => {
axios({
method: 'POST',
url: `https://us18.api.mailchimp.com/3.0/lists/${LIST_ID}/members/`,
headers: {Authorization: key},
data: { email_address: `${email}`, status: "subscribed" } })
.then(response => {
console.log(response);
return response
}).then(data => {
console.log('Data Rec\'d:', data);
}).catch(error => {
console.log('Subscribe error:', error);
// reject('Something went wrong')
});
};
module.exports = async (req, res) => {
if (req.method === 'POST') {
res.setHeader('Content-Type', 'application/json');
res.statusCode = 200;
res.send(req);
await subscribe(req.body);
res.end()
} else {
res.setHeader('Content-Type', 'application/json');
res.statusCode = 200;
res.end(JSON.stringify({name: 'GET received'}))
}
};
我遇到了类似的问题,我所要做的就是尝试生产中的网址,例如 {URL}/subscribe,然后确保你得到这个
{ “错误”:“不允许使用方法 GET” }
如果你没有得到这一点,请正确检查你在 git 上的提交,看看该路由是否被推送到 git 并且它没有被忽略。如果文件被忽略,只需正确添加并重新部署即可。