Ниже приведен код на стороне клиента для вызова облачной функции:
var getShippingRate = firebase
.functions()
.httpsCallable("shippo-generateShippingRate");
getShippingRate({ address: shippo })
.then(function(result) {
// Read result of the Cloud Function.
console.log("THE SHIPPING RATES", result.data.shipment);
})
.catch(function(error) {
// Getting the Error details.
console.log("ERROR SHIPPING: ", error);
var code = error.code;
var message = error.message;
var details = error.details;
});
Облачная функция:
exports.generateShippingRate = functions.https.onCall(async (data, context) => {
const customer_address = data.address;
return generateShipmentObject(customer_address);
});
generateshipmentObject
возвращает это:
shippo.shipment.create(
{
address_from: addressFrom,
address_to: addressTo,
parcels: [parcel],
async: true
},
(err, shipment) => {
// asynchronously called
if (err) {
return { error: err };
} else {
return { result: shipment };
}
}
Я получаю стандартную ошибку CORS, но вызываемая облачная функция должна обработать это автоматически:
Доступ к выборке at ... from origin 'http://localhost: 5000 ' заблокировано политикой CORS:
EDIT
I ' используя firebase serve --only hosting
для проверки на локальном хосте.
Облачные функции развертываются с firebase deploy --only funtions
Я вызываю другие похожие облачные функции на том же сайте, у которых нет этой проблемы.