Firebase可调用函数给了我CORS问题

时间:2019-07-20 00:21:22

标签: firebase google-cloud-functions firebase-hosting

我一直在尝试可调用函数以避免手动处理cors,但到目前为止没有任何作用

enter image description here

我读过类似的问题Firebase Callable Function + CORS

区别在于该家伙具有“不允许访问控制允许来源”问题。我的是对飞行前的反应...问题

我想请人帮忙。真令人沮丧。

我正在执行Blaze计划

到目前为止,我一直只尝试在本地运行功能。我根本没有部署该功能。

这是我的功能代码

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();


exports.createOrder = functions.https.onCall((data, context) => {
return new Promise((resolve, reject) => {
    resolve(data)
        .then(result => {
            return result;
        })
        .catch(err => {
            console.error(err.code);
            throw new functions.https.HttpsError('unknown', err.message);
        });
});

}); 这是我的客户代码

export const createOrder = order => {
    functions
        .httpsCallable('createOrder')({ data: order })
        .then(result => {
            console.log('result create order is', result);

            return result;
        });
};

功能package.json

{
    "name": "functions",
    "description": "Cloud Functions for Firebase",
    "scripts": {
        "serve": "firebase serve --only functions",
        "shell": "firebase functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
    },
    "dependencies": {
        "@sendgrid/mail": "^6.4.0",
        "axios": "^0.19.0",
        "cors": "^2.8.5",
        "firebase": "^6.3.1",
        "firebase-admin": "^8.2.0",
        "firebase-functions": "^3.1.0",
        "firebase-functions-test": "^0.1.6"
    },
    "engines": {
        "node": "8"
    },
    "private": true
}

firebase config.json

"firebase": {
            "apiKey": "AIzaSy*****",
            "authDomain": "jokii-test.firebaseapp.com",
            "databaseURL": "https://jokii-test.firebaseio.com",
            "projectId": "jokii-test",
            "storageBucket": "jokii-test.appspot.com",
            "messagingSenderId": "104544.....",
            "appId": "1:10454485....."
        }

Firebase SDK =“ firebase”:“ ^ 6.3.1”,

1 个答案:

答案 0 :(得分:1)

客户端SDK不知道如何访问尚未部署的功能。注意,在错误输出中,它尝试访问的URL是完全部署的函数的URL。当前无法使其覆盖URL来访问您在本地主机上本地运行的URL。

如果要在本地调用可调用函数,则需要实现遵循protocol specification for callable functions的客户端。而且,正如您所看到的,这将是相当多的工作,因为客户端SDK正在为您管理许多HTTP协议。