提问者:小点点

使用Node将cors添加到Google Cloud函数后无法返回简单数据


我将npm包cors添加到我的Google函数项目中。 我做了个测试,没有再出现cors错误。 现在我无法返回数据。 我测试的功能非常简单:

    const cors = require('cors')();

      function hello(req, res) {
        res.status(200)
        .send('Hello, Functions');
    };

    exports.hello= async function ({ req, res, db, fs, log }) {
        cors(req, res, () => {
            hello(req, res);
        });
        }

当我像这样调用这个函数时:

 const file = this.$functions.httpsCallable("hello");
  const result = await file();

出现以下错误:

Error: Response is not valid JSON object.

所以我把我的函数改成了这样:

 function hello(req, res) {
let jsonobj = {'hello':'from functions'}
res.status(200)
  .send(jsonobj);

};

我现在得到了这个错误:

Error: Response is missing data field

使用上述方法时,如何正确返回数据? 谢谢


共1个答案

匿名用户

看起来您正在尝试使用Firebase client library for callable type function来调用使用Google Cloud Tools部署的普通HTTP类型函数。 这行不通。

Firebase可调用函数只有在客户端和函数都是使用Firebase库构建时才起作用,如文档所示。 它在HTTP上实现了一个特殊的协议。 客户端和服务器都有专门的代码来实现这一点。

如果您使用gcloud部署一个HTTP函数,那么它并没有实现Firebase可调用协议。 您应该使用更典型的HTTP库从客户端调用它。