Firebase云功能 - onCall无法正常工作

Jbb*_*bae 7 javascript cors firebase google-cloud-functions

我正在测试FB docs(https://firebase.google.com/docs/functions/callable)中描述的一个非常简单的实现,但它无法正常工作.

这是我的Firebase功能,部署到云端:

exports.getRecSkills = functions.https.onCall((data, context) => {
  return {text: data.text};
});
Run Code Online (Sandbox Code Playgroud)

...和我的客户电话(初始化FB后):

var getRecSkills = firebase.functions().httpsCallable('getRecSkills');

getRecSkills({text: '123'}).then(function(result) {
  console.log(result);
}).catch(function(error) {
  console.log(error.code);
  console.log(error.message);
});
Run Code Online (Sandbox Code Playgroud)

我得到一个与CORS标题相关的问题,但在文档中,它没有提到CORS的需要......我错过了什么?

在此输入图像描述

一些说明:

  • 我已经能够执行其他Firebase功能(即HTTPS,数据库),因此我认为这不是我设置Firebase错误的原因.
  • 已更新至最新的Firebase,因此不要认为这也是一个问题.
  • 给我一个"内部"错误,API文档没有帮助,除了"严重错误".
  • 当我通过shell进行本地测试时,我似乎无法使函数工作(它一直给我400个错误),即使我让它与任何其他数据库和https函数一起工作

在这段时间里一直在努力...请帮忙!

Ant*_*Ooi 2

要消除CORS错误,请确保您firebase.json具有以下内容headers

"hosting": [
    {
      "headers": [
        {
          "source": "**",
          "headers": [
            {
              "key": "Access-Control-Allow-Origin",
              "value": "*"
            }
          ]
        }
      ]
   }
]
Run Code Online (Sandbox Code Playgroud)

如果您在本地设备上的Firebase 模拟器上运行,请确保在初始化 Firebase Functions 后具有以下内容,否则您的本地设备仍将调用远程 Firebase Function,并且您将CORS再次遇到错误:

if (window.location.hostname === "localhost") {
    console.log("localhost detected!");
    firebase.functions().useFunctionsEmulator('http://localhost:5001');
};
Run Code Online (Sandbox Code Playgroud)