我在NodeJS中使用Mailchimp API,但无法将成员添加到列表中。
这是我的片段.js
var username = "&&";
var password = "&&-us&&";
var auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
var url = "https://us-&&.api.mailchimp.com/3.0/lists/[listId]/members";
var json = { "email_address":"test@ŧest.com",
"status":"pending",
"merge_fields":{ "FNAME" : "newuser",
"LNAME" : "happy" }
}
request({ url, json: json, method: 'POST',
headers: { 'Content-Type': 'application/json',
'Authorization': 'apikey ' + password }
}, function(err, res, body){
if(err){
return console.log("err:", err)
}
console.log("connection succeed"); console.log("res: ", res)
});
我的控制台返回我:
err: { Error: getaddrinfo ENOTFOUND us-'&&.api.mailchimp.com us-18.api.mailchimp.com:443
at errnoException (dns.js:50:10(
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26(
代码:"未找到",
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
主机名:"us-&.api.mailchimp.com",
主持人:"us-&.api.mailchimp.com",
端口:443 }
我不知道出了什么问题,如果有人有提示,那就太好了。
有效的网址类似于https://serverName.api.mailchimp.com/3.0/lists/listID
.
您需要替换 URL 中的以下两个才能使其正常工作:
- serverName - 您必须生成自己的特定 API 密钥,如下所示:
#########################-us2
.在这种情况下,您必须将serverName
替换为 url 中的us2
。 - listID - 您必须在mailchimp上生成一个特定的列表ID,从中获得一个列表ID,您必须在URL中替换该列表ID,例如
#######
。
因此,最终网址将如下所示https://us2.api.mailchimp.com/3.0/lists/#######
.
我遇到了这个问题,但仅限于生产中。在我的开发环境中一切正常。我忘了向我的托管服务提供商提供所需的环境变量。
按照惯例,我有 2 个环境变量。MAILCHIMP_API_KEY
和MAILCHIMP_SERVER_PREFIX
.NodeJS无法访问MailChimp的服务器,因为URL的一部分丢失了。