我一直在尝试可调用函数以避免手动处理cors,但到目前为止没有任何作用
我读过类似的问题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”,
答案 0 :(得分:1)
客户端SDK不知道如何访问尚未部署的功能。注意,在错误输出中,它尝试访问的URL是完全部署的函数的URL。当前无法使其覆盖URL来访问您在本地主机上本地运行的URL。
如果要在本地调用可调用函数,则需要实现遵循protocol specification for callable functions的客户端。而且,正如您所看到的,这将是相当多的工作,因为客户端SDK正在为您管理许多HTTP协议。