Ответ 1
Код состояния, передаваемый в HttpsError, не может быть test/code
. Это должен быть один из стандартных кодов, перечисленных здесь:https://firebase.google.com/docs/reference/functions/functions.https.HttpsError
Я пытаюсь вызвать вызываемую облачную функцию из моего приложения, но у меня возникают проблемы с CORS.
Я не могу включить Cors, так как у меня нет доступа к запросу и ответу на функцию onCall. Это моя функция:
exports.UserInvitation = functions.https.onCall((data, context) => {
const email = data.email
return new Promise((resolve, reject) => {
admin.auth().createUser({
email: email,
emailVerified: false,
password: password
}).then(resolve).catch((err) => {
console.error(err.code)
reject(new functions.https.HttpsError(err.code, err.message))
})
})
})
И вот как я это называю:
functions.httpsCallable('UserInvitation')({ email: this.input.value }).then((data) => {
console.log('Sent invitation:', data)
})
Firebase-functions 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": {
"bluebird": "^3.5.1",
"firebase-admin": "~5.12.0",
"firebase-functions": "^1.0.1"
},
"private": true
}
WEB SDK Firebase версия: 4.13.1
Код состояния, передаваемый в HttpsError, не может быть test/code
. Это должен быть один из стандартных кодов, перечисленных здесь:https://firebase.google.com/docs/reference/functions/functions.https.HttpsError
Моя проблема была не с CORS, а с моим обработчиком ошибок. Вместо отказа от обещания я использовал throw
непосредственно в обработчике уловов.
catch((err) => {
throw new functions.https.HttpsError('unknown', err.message, err)
})
У меня была эта проблема с некоторыми из моих функций Firebase, но не с другими. В конце концов я исправил это, сделав это:
Без каких-либо изменений в самой функции, теперь она работает без каких-либо проблем с CORS.