【问题标题】:Cloud Functions for Firebase Image download function ErrorCloud Functions for Firebase 图片下载功能错误
【发布时间】:2017-11-06 05:41:14
【问题描述】:

我正在使用 Firebase 和 Firebase 的新功能 Cloud Functions 构建一个 Web 应用程序。我创建了一个函数,它接受一个 URL 并将图像下载到一个 64 位编码字符串中,如下所示,使用节点模块 request 和 request-promise-native:

module.exports = {
downloadImageFromUrl: function (url) {
    var options = {
        method: 'GET',
        uri: url,
        resolveWithFullResponse: true,
        simple: false,
        family: 4
    };
    return rp.get(options)
        .then(function (res) {
            return "data:" + res.headers["content-type"] + ";base64," + new Buffer(res.body).toString('base64');
        })
        .catch(function (error) {
            console.log("ERROR GETTING image", error);
            return error;
        });
    }
};

top 函数在本地运行完美,但一旦在 firebase 上运行,就会报错:

RequestError: Error: getaddrinfo EAI_AGAIN lh6.googleusercontent.com:443
at new RequestError (/user_code/node_modules/request-promise/node_modules/request-promise-core/lib/errors.js:14:15)
at Request.plumbing.callback (/user_code/node_modules/request-promise/node_modules/request-promise-core/lib/plumbing.js:87:29)
at Request.RP$callback [as _callback] (/user_code/node_modules/request-promise/node_modules/request-promise-core/lib/plumbing.js:46:31)
at self.callback (/user_code/node_modules/request/request.js:188:22)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at Request.onRequestError (/user_code/node_modules/request/request.js:884:8)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at TLSSocket.socketErrorListener (_http_client.js:310:9)
at emitOne (events.js:96:13)
at TLSSocket.emit (events.js:188:7)
at connectErrorNT (net.js:1020:8)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)

我在创建用户时调用 firebase auth 触发器中的函数,如下所示:

exports.createUser = functions.auth.user().onCreate(event => {
    if (event.data.photoURL) {
    utils.downloadImageFromUrl(event.data.photoURL)
        .then(function(res){
            console.log("User Photo", res);

        })
        .catch(function(error){
            console.log("Error", error);
        })
}
});

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    尚不完全确定这是否是答案,但在阅读文档后,我阅读了他们的免费计划,其中说您不能提出任何出站请求。所以我猜想从 URL 获取图像算作出站请求。在我开始为他们的服务付费后,我会回来验证这是否是问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-28
      • 2022-08-19
      • 2018-06-11
      • 2022-06-16
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多