Firebase Cloud功能:ECONNREFUSED

时间:2018-06-20 18:48:13

标签: typescript firebase google-cloud-functions

我正在尝试使用Typescript优化诸如here这样的Firebase云功能的网络

const http = require('http');
const functions = require('firebase-functions');
const agent = new http.Agent({keepAlive: true});

export const getXXX = functions.https.onRequest((request, response) => {
    const req = http.request({
        host: 'localhost',
        port: 443,
        path: '',
        method: 'GET',
        agent: agent,
    }, res => {
        let rawData = '';
        res.setEncoding('utf8');
        res.on('data', chunk => { rawData += chunk; });
        res.on('end', () => {
            response.status(200).send(`Data: ${rawData}`);
        });
    });
    req.on('error', e => {
        response.status(500).send(`Error: ${e.message}`);
    });
    req.end();
});

但是我不断得到

  

错误:连接ECONNREFUSED 127.0.0.1:443

我对TypeScript和js不太熟悉,所以请帮助我。
另一个问题是何时触发“数据”解析??

3 个答案:

答案 0 :(得分:1)

您无法在Cloud Functions中的“ localhost”(127.0.0.1)上访问任何内容。我怀疑您打算在其中放置其他主机,并确保您的项目在Blaze计划中,以实现与不受Google完全控制的服务的传出连接。

答案 1 :(得分:0)

原来,我需要采用付费计划,才能从函数内部发出外部HTTP请求。

答案 2 :(得分:0)

您可以在localhost上运行Cloud Functions。您需要做的就是运行Cloud服务的本地仿真器。 Google提供了哪些!这是一个非常棒的工具和出色的设置!

针对Firebase工具套件执行以下步骤: https://firebase.google.com/docs/functions/local-emulator

针对Cloud工具套件执行以下步骤: https://cloud.google.com/functions/docs/emulator

它们非常相似。

您不需要Blaze计划,可以使用“随用随付”计划,其中包括免费套餐配额。 “包括免费使用Spark计划*” https://firebase.google.com/pricing