VueJS Firebase 应用程序导出默认错误的问题

Posted

技术标签:

【中文标题】VueJS Firebase 应用程序导出默认错误的问题【英文标题】:VueJS Firebase app problem of export default error 【发布时间】:2021-08-07 02:51:00 【问题描述】:

我正在尝试使用最新的 vue 2 和 firebase 创建 crud 应用程序,& 这是我的 firebase.js 文件

import firebase from 'firebase/app'
import 'firebase/auth'
import 'firebase/firestore'


const firebaseConfig = 
   stuff
  ;

firebase.initializeApp(firebaseConfig);
const database = firebase.firestore()
const auth = firebase.auth()

const usersCollection = database.collection('users')

export
 
    database,
    auth,
    usersCollection

这是我的 store/index.js 文件

import Vue from "vue";
import Vuex from "vuex";
import fb from "../../firebase"

import router from "../router";
Vue.use(Vuex);

export default new Vuex.Store(
  state: 
   userProfile:
  ,
  
  mutations: 
   
    setUserProfile(state,val)
    
      state.userProfile=val
    ,
    setPerformingRequest(state,val)
   
     state.performingRequest=val
   
  ,
  actions: 

    async login(dispatch,form)
    
      constuser = await fb.auth().signInWithEmailAndPassword(form.email,form.password)
      dispatch('fetchUserProfile',user)
    ,


    async signUp(dispatch,form)
    

       const user = await fb.auth().createUserWithEmailAndPassword(form.email,form.password)

      //  create user object in userCollection

      await fb.usersCollection.doc(user.uid).set(
        firstName:form.firstName,
        middleName:form.middleName,
        lastName:form.lastName,
        email:form.email,
        password:form.password,
        gender:form.gender,
        age:form.user_age
      )

      dispatch('fetchUserProfile',user)

    ,

    async fetchUserProfile(commit,user)
    
      // fetching user profile data into constant named userProfile
      const userProfile = await fb.usersCollection.doc(user.uid).get()

      // setting the fetched data from firebase to state of userProfile
      commit('setUserProfile',userProfile.data())

      // now changing route to dashboard

      if(router.currentRoute.path ==='/')
      
        router.push('/Dashboard')
      

    ,
  
    async logOut(commit)
    
          
      // log user out
      await fb.auth.signOut()

      //  clear user data from state

      commit('setUserProfile',)

      // changing route to homepage
      router.push('/')
    



  ,
  modules: ,
);

应用程序在浏览器控制台中运行时出现警告未捕获(承诺中)类型错误:firebase__WEBPACK_IMPORTED_MODULE_4_.default 未定义并且在 vs 代码终端中 "在“../../firebase”中找不到导出“默认”(导入为“fb”) 因为没有用户注册,也没有创建文档 有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

改成

const fb = require('../../firebase.js');

或到

import  auth, usersCollection  from "../../firebase";   

在商店文件中应该可以解决问题。


第一种情况,你也需要改变

await fb.auth().createUserWithEmailAndPassword

await fb.auth.createUserWithEmailAndPassword

第二种情况,改

await fb.auth().createUserWithEmailAndPassword

await auth.createUserWithEmailAndPassword

在这种情况下,还请注意,如果您要在 store/index.js 文件中使用 database,您还需要导入 database,例如:

import  database, auth, usersCollection  from "../../firebase"; 

更多解释here和here。

【讨论】:

感谢您分享这个,这确实有效!

以上是关于VueJS Firebase 应用程序导出默认错误的问题的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs 和 Firebase 存储问题。未捕获的类型错误:存储不是函数

Firebase 存储不是 vuejs 应用程序中的功能

VueJS和Firebase,刷新时历史模式404错误

Vue 2;在“firebase/app”中找不到导出“默认”(导入为“firebase”)

VueJS + Firebase 使用 Firebase 绑定

无法为 VueJS + NodeJS 安装 Firebase