#javascript #firebase #vue.js #google-cloud-functions
# #javascript #firebase #vue.js #google-cloud-функции
Вопрос:
Я пытаюсь вызвать уже успешно развернутую облачную функцию Firebase из моего Vue.js применение. Функция должна запускаться из europe-west3
региона.
У меня есть кнопка, на которую нажимается, а затем запускается call()
метод:
<script>
import { functions } from '@/firebase'
export default {
methods: {
call() {
const callFunction = functions('europe-west3').httpsCallable('orgNew') // Error points to this line of code
callFunction( { name: 'John Doe'}).then(result => {
console.log(result.data)
})
}
}
}
</script>
К сожалению, это не работает, и я получаю эти ошибки в консоли:
В моем firebase.js
файле я импортировал Firebase
и создал несколько помощников:
import firebase from 'firebase/app'
import 'firebase/auth'
import 'firebase/firestore'
import 'firebase/functions'
let firebaseConfig = { // API KEYS AND CONFIG };
firebase.initializeApp(firebaseConfig)
var db = firebase.firestore()
const auth = firebase.auth()
const functions = firebase.functions()
export {
db,
auth,
functions
}
Помощь очень ценится!
Комментарии:
1. Похоже, что это сообщение об ошибке не имеет никакого отношения к приведенному здесь коду.
2. @DougStevenson При открытии сообщения об ошибке в инструментах разработки оно точно указывает на строку кода в моем вопросе (проверьте обновленный код)
Ответ №1:
Ваш код экспортирован firebase.functions()
из firebase.js . Это не функция, но ваш импортирующий код вызывает ее как функцию. Вот о чем говорит сообщение об ошибке, в котором говорится, что вы делаете неправильно.
Вместо экспорта firebase.functions()
просто экспортируйте firebase.functions
, это функция, которую вы можете использовать для инициализации с регионом.
Либо это, либо экспорт firebase.functions("europe-west3")
, используйте его в коде импорта как functions.httpsCallable()
.
Обратите внимание, что в настоящее время в строке вашего региона допущена опечатка.
Комментарии:
1. Исправлена опечатка. В firebase.js Я изменил код на «firebase.functions («europe-west3)» и назвал его, как вы сказали: «const callFunctionfunctions.httpsCallable(«orgNew»)». Теперь я получаю эту ошибку: ошибка типа: firebase__WEBPACK_IMPORTED_MODULE_0_ .functions.httpsCallable не является функцией
2. Это звучит как несвязанная проблема. Я предлагаю просмотреть документацию, указав, какую версию клиентского SDK вы используете с вашим пакетом: firebase.google.com/docs/web/setup#add-sdks-initialize
3. Я использую новейшую версию пакета (в настоящее время firebase@8.1.2 выпущен 3/12/2020). Поэтому я проверил правильный импорт (который отличается от версии 7). Так что, похоже, это не проблема, я думаю.
4. Да, основной импорт изменился в версии 8.