【问题标题】:Firebase functions ENOTFOUND on all http requests [duplicate]Firebase 在所有 http 请求上运行 ENOTFOUND [重复]
【发布时间】:2017-08-08 23:13:52
【问题描述】:

我正在尝试设置一个使用 Express 并发出 HTTP 请求的函数,但无论我发出什么请求,我总是收到 ENOTFOUND 错误。

我已经尝试使用 4 个不同的库(https、request、request-promise、requestify)发出请求,但都给出了相同的错误。

我按照这个例子来设置系统:minimal-webhook + authorized-https-endpoint


我的基本测试功能,也抛出错误:

"use strict";
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);

const express = require("express");
const app = express();

const https = require("https");

app.get("*", (req, res) =>
{
    var testReq = https.request({
        host: "www.google.com",
        path: "/recaptcha/api/siteverify"
    },

    (res) => {
        console.log("Finished with response " + res);
    });

    testReq.on("error", (e) => {
        console.log("Crashed with error " + e);
    });

    testReq.end();
});

exports.test = functions.https.onRequest(app);

使用 Postman 对https://us-central1-project-abc.cloudfunctions.net/test/ 的 GET 请求日志,例如:

Crashed with error Error: getaddrinfo ENOTFOUND www.google.com www.google.com:443

【问题讨论】:

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


    【解决方案1】:

    getaddrinfoENOTFOUND 错误意味着您的 DNS 解析器找不到 DNS 地址。也许您需要使用代理或不同的 DNS 解析器。确保您的 Firebase 函数完全可以建立出站互联网连接。

    【讨论】:

    • Outbound connections... 按照这个想法,我想说这是我的免费计划的问题。 Firebase 表示它“只允许向 Google 拥有的服务发出出站网络请求”。但我正在向谷歌服务发出请求,不是吗?
    • 我遇到了同样的问题。也许需要升级计划
    • @约翰。你解决问题了吗?升级计划?
    • 不是firebase google服务吗?即使使用 Google Identity Rest 调用,我也看到了与上述相同的问题。想知道为什么它会发生,即使它是谷歌服务。
    【解决方案2】:

    实际上,您只需加入付费计划即可提出外部请求。

    Blaze 计划(即用即付)可能对您有好处(我目前正在使用该计划,零费用)。

    https://firebase.google.com/pricing/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 2019-01-06
      • 2016-11-27
      • 2016-01-26
      • 2012-08-20
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多