firebase.auth.GoogleAuthProvider не является конструктором

#firebase #vue.js #firebase-authentication

#firebase #vue.js #firebase-аутентификация

Вопрос:

Я пытаюсь использовать Google sign, используя firebase в Vue framework. Я не знаю, в чем ошибка, может ли кто-нибудь помочь мне с этим.

 vue.runtime.esm.js?2b0e:1888 TypeError: _firebase_js__WEBPACK_IMPORTED_MODULE_2__.fb.auth.GoogleAuthProvider is not a constructor
at VueComponent.socialLogin (Signin.vue?3d55:76)
at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1854)
at HTMLButtonElement.invoker (vue.runtime.esm.js?2b0e:2179)
at HTMLButtonElement.original._wrapper (vue.runtime.esm.js?2b0e:6917)
  

это мой код

firebase.js

 import firebase from "firebase";
var firebaseConfig = {
    config
};
const fb=firebase.initializeApp(firebaseConfig);
export { fb };
  

Войдите в систему.vue

 <script>
    import { fb } from "../firebase.js";
    export default {
      name: "Signin",
      components: {},
      data() {
        return {
        };
      },
    
      methods: {
         socialLogin() {
       const provider = new fb.auth.GoogleAuthProvider();
    
            fb.auth().signInWithPopup(provider).then((result) => {
              this.$router.replace('home');
            }).catch((err) => {
              alert('Oops. '   err.message)
            });
          }
      }
    };
    </script>
  

Комментарии:

1. Приложение firebase.initializeApp firebase вернет приложение, которое не равно firebase . Приложение firebase имеет метод auth , но не имеет auth свойства. Поэтому вам нужно импортировать firebase и вызывать new firebase.auth.GoogleAuthProvider() .

Ответ №1:

auth Свойство (а не auth() функция) доступно для статического firebase объекта, а не для вашего приложения firebase.

Вы хотите что-то более похожее на это

 import firebase from "firebase/app"
import "firebase/auth" // 👈 this could also be in your `firebase.js` file

const provider = new firebase.auth.GoogleAuthProvider()
  

Комментарии:

1. Спасибо за решение, оно работает😄