【问题标题】:Cloud Functions for Firebase - getaddrinfo EAI_GAIN site.com:443 [duplicate]Firebase 的云功能 - getaddrinfo EAI_GAIN site.com:443 [重复]
【发布时间】:2020-09-04 05:10:01
【问题描述】:

所以我现在正在使用 firebase 一段时间,我已经阅读了一些其他主题,这确实意味着您必须升级到付费计划。 但是,我在本地使用 http 并且效果很好。在服务器上它不起作用并抛出: 错误: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();
    });
}

【问题讨论】:

  • 我不能给你一个公开的支持,因为我没有要求的 15 分...

标签: node.js firebase google-cloud-functions


【解决方案1】:

如果您收到此错误:

错误:getaddrinfo EAI_AGAIN site.com:443

您正在尝试从 Cloud Functions 代码中访问 site.com,这要求您的项目采用付费计划。 Cloud Functions 使用(相当简单的)白名单/正则表达式来检测对 Google API 的调用,而您网站的自定义域肯定不会出现在该列表中。

如果 site.com 托管在 Firebase 上,您可能需要尝试通过其 projectid.firebaseapp.com 别名访问它,以查看它是否已列入白名单。如果不是,您可以随时file a feature request 将其添加,但暂时只能通过付费计划调用它。

【讨论】:

  • 好的,我明白了。我只是认为从文档中并不清楚。我尝试使用 projectid 和 firebaseapp.com 但返回了相同的错误。您如何建议使用 Hosting 中的文件或函数文件夹中的文件来获取内部 html 文件并在发送给客户端之前对其进行自定义?
  • 好的,我想通了,使用函数文件夹作为使用文件的空间。然后使用 fs.readfile 命令。有点容易。谢谢
猜你喜欢
  • 2019-07-26
  • 2020-02-04
  • 2018-12-28
  • 1970-01-01
  • 2017-10-10
  • 2020-06-09
  • 2018-08-12
  • 2020-05-07
  • 2019-03-05
相关资源
最近更新 更多