Вызываемая облачная функция Firebase с регионом не работает

#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.