Firebase功能对所有http请求进行ENOTFOUND

时间:2017-03-17 11:48:40

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

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

我已经尝试使用4个不同的库(https,请求,请求 - 承诺,请求)来发出请求,但都会产生相同的错误。

我按照这个示例来设置系统: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);

使用邮递员向https://us-central1-project-abc.cloudfunctions.net/test/记录GET请求,例如:

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

2 个答案:

答案 0 :(得分:3)

ENOTFOUND的{​​{1}}错误表示您的DNS解析程序无法找到DNS地址。也许您需要使用代理或不同的DNS解析器。确保您的Firebase功能完全可以建立出站互联网连接。

答案 1 :(得分:2)

实际上,您只需要付费计划就可以提出外部请求。

Blaze计划(随时付费)对您有好处(我目前正在使用该计划,收费为零)。

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