Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase云功能-onCall不工作_Javascript_Firebase_Cors_Google Cloud Functions - Fatal编程技术网

Javascript Firebase云功能-onCall不工作

Javascript Firebase云功能-onCall不工作,javascript,firebase,cors,google-cloud-functions,Javascript,Firebase,Cors,Google Cloud Functions,我正在测试FB docs()上描述的一个非常简单的实现,但它不起作用 这是我的Firebase功能,部署到云: exports.getRecSkills = functions.https.onCall((data, context) => { return {text: data.text}; }); …和我的客户端呼叫(初始化FB后): 我得到一个CORS标题相关的问题,但在文件中,它没有提到需要CORS。。。我错过什么了吗 一些注意事项: 我已经能够执行其他Firebase

我正在测试FB docs()上描述的一个非常简单的实现,但它不起作用

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

exports.getRecSkills = functions.https.onCall((data, context) => {
  return {text: data.text};
});
…和我的客户端呼叫(初始化FB后):

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

一些注意事项:

  • 我已经能够执行其他Firebase功能(即HTTPS、, 数据库)所以我不认为是我把Firebase设置错了
  • 更新到最新的Firebase,所以也不要认为这是个问题
  • 给我一个“内部”错误,API文档对此没有帮助,除了“有严重错误”
  • 我似乎无法让这个函数工作(它一直在给我压力) 400个错误)通过shell进行本地测试时,即使我得到了它 使用任何其他数据库和https功能

已经为此挣扎了很长一段时间。。。请帮忙

我最近也遇到了同样的问题,但在配置对象中包含了我的“projectId”后就解决了。下面是Javascript的Firebase配置对象的代码片段。确保配置对象中的所有字段都已填充,它应该可以解决未定义的问题

     var config = {
     apiKey: "<API_KEY>",
     authDomain: "<PROJECT_ID>.firebaseapp.com",
     databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
     projectId: "<PROJECT_ID>",
     storageBucket: "<BUCKET>.appspot.com",
     messagingSenderId: "<SENDER_ID>",
     };
var配置={
apiKey:“,
authDomain:“.firebaseapp.com”,
数据库URL:“https://.firebaseio.com",
投射:“,
storageBucket:“.appspot.com”,
messagingSenderId:“”,
};

如果您有
CORS
问题,并且您正在使用
express
公开API函数,则必须允许CORS:

import * as cors from 'cors';
import * as express from 'express';

const corsHandler = cors({origin: true});

const app = express();
app.use(corsHandler);

app.post('/createUser', async (request, response) => {
  await createUser(request, response);
});

exports.api = functions.https.onRequest(app);

要消除您的
CORS
错误,请确保您的
firebase.json
具有以下
标题

"hosting": [
    {
      "headers": [
        {
          "source": "**",
          "headers": [
            {
              "key": "Access-Control-Allow-Origin",
              "value": "*"
            }
          ]
        }
      ]
   }
]
如果您在本地设备上运行的是Firebase Emulator,请确保在初始化Firebase函数后具有以下功能,否则您的本地设备仍将调用远程Firebase函数,您将再次遇到
CORS
错误:

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

您正在使用什么版本的客户端和节点SDK?我正在为FB client(v4.13.1)和FIrebase admin(v5.12.0)使用最新版本的客户端和节点SDK。您在服务器上使用什么版本的FIrebase函数?我正在使用v1.0.2(最新版本)将我的函数部署到FIrebase,我猜你是在问这个问题?我看到你忘了用projectd初始化配置。。您的URL上有“未定义”
if (window.location.hostname === "localhost") {
    console.log("localhost detected!");
    firebase.functions().useFunctionsEmulator('http://localhost:5001');
};