Firebase 的云功能 - getaddrinfo EAI_GAIN site.com:443 [重复]

Posted

技术标签:

【中文标题】Firebase 的云功能 - getaddrinfo EAI_GAIN site.com:443 [重复]【英文标题】:Cloud Functions for Firebase - getaddrinfo EAI_GAIN site.com:443 [duplicate] 【发布时间】: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 分... 【参考方案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 命令。有点容易。谢谢

以上是关于Firebase 的云功能 - getaddrinfo EAI_GAIN site.com:443 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 的云功能:“错误:无法处理请求”

Firebase 的云功能 - 即使我正在为 firebase-admin 功能发出出站 http 请求,也会出现网络错误

Firebase 的云功能 - 获取当前用户 ID [重复]

如何从 Firebase Cloud 功能中提取已部署的云功能 [重复]

javascript 用于连接DialogFlow和Firebase实时数据库的云功能

Firebase 的云功能 - getaddrinfo EAI_GAIN site.com:443 [重复]