我将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
使用上述方法时,如何正确返回数据? 谢谢
看起来您正在尝试使用Firebase client library for callable type function来调用使用Google Cloud Tools部署的普通HTTP类型函数。 这行不通。
Firebase可调用函数只有在客户端和函数都是使用Firebase库构建时才起作用,如文档所示。 它在HTTP上实现了一个特殊的协议。 客户端和服务器都有专门的代码来实现这一点。
如果您使用gcloud部署一个HTTP函数,那么它并没有实现Firebase可调用协议。 您应该使用更典型的HTTP库从客户端调用它。