所以我现在工作了一段时间,我读了一些其他的话题,这确实意味着你必须升级到付费计划。但是,在本地,我使用http,它工作得很好。在服务器上,它不工作并抛出: Error: getaddrinfo EAI_AGAIN site.com:443
我不是在提出外部请求,我唯一能想到的就是它是云函数和Firebase托管的外部请求。这算外部的吗?我只是在Firebase的主机端调用/请求页面。没有任何外部页面。
是什么导致服务器出现此错误,建议的修复方法是什么?
此代码示例来自云函数的Node.js :main。
var client = http;
client = (req.secure) ? https:client;
// console.log(client)
// const http = new XMLHttpRequest();
function httpRequest(params, postData) {
return new Promise(function(resolve, reject) {
console.log('params' + params)
var req = client.request(params, function(res) {
// reject on bad status
if (res.statusCode < 200 || res.statusCode >= 300) {
return reject(new Error('statusCode=' + res.statusCode));
}
// cumulate data
var body = [];
res.on('data', function(chunk) {
body.push(chunk);
});
// resolve on end
res.on('end', function() {
try {
body = Buffer.concat(body).toString();
} catch(e) {
reject(e);
}
resolve(body);
});
});
// reject on request error
req.on('error', function(err) {
// This is not a "Second reject", just a different sort of failure
reject(err);
});
if (postData) {
req.write(postData);
}
// IMPORTANT
req.end();
});
}发布于 2020-05-18 13:41:44
如果您得到这个错误:
错误: getaddrinfo EAI_AGAIN site.com:443
您正在尝试从云函数代码中访问site.com,这要求您的项目处于付费计划中。云函数使用一个(相当简单的)白名单/正则表达式来检测对Google的调用,您的网站的自定义域肯定不会出现在该列表中。
如果site.com托管在Firebase上,您可能需要尝试通过它的projectid.firebaseapp.com别名访问它,以查看它是否已被白化。如果不是的话,您可以随时为它添加提交功能请求,但只能暂时按付费计划调用它。
https://stackoverflow.com/questions/61868979
复制相似问题