导入 firebase.firestore() 返回未定义
Posted
技术标签:
【中文标题】导入 firebase.firestore() 返回未定义【英文标题】:import firebase.firestore() returns undefined 【发布时间】:2019-11-11 01:29:55 【问题描述】:我有一个安装了 vuefire 的 vue 应用程序。按照这里的文档:https://vuefire.vuejs.org/vuefire/getting-started.html#plugin,我有 main.js 文件:
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import firestorePlugin from 'vuefire'
Vue.config.productionTip = false;
Vue.use(firestorePlugin);
new Vue(
router,
store,
render: h => h(App)
).$mount('#app')
firebase.js 文件如下:
import firebase from "firebase";
const config =
apiKey: "XXXXXX",
authDomain: "XXXXX",
databaseURL: "XXXXX",
projectId: "XXXXXXX",
storageBucket: "XXXXXX",
messagingSenderId: "XXXXXXX",
appId: "XXXXX"
;
firebase.initializeApp(config);
export const db = firebase.firestore();
这里是 home 组件
<template>
<div>
<button @click="signIn">Log in with google</button>
</div>
</template>
<script>
import firebase from "firebase";
import db from "@/firebase"
export default
methods:
signIn()
const provider = new firebase.auth.GoogleAuthProvider();
firebase
.auth()
.signInWithPopup(provider)
.then(result =>
const malakas =
userId: result.user.uid,
email: result.user.email,
displayName: result.user.displayName,
photoURL: result.user.photoURL
;
db.collection("malakes")
.doc(result.user.uid)
.set(spreadOparatorTest, merge: true );
)
.catch(err => console.log(err));
;
</script>
<style lang="scss" scoped>
</style>
奇怪的是,在db.collection(...)
我得到:
TypeError: 无法读取未定义的属性“集合”
因为我正在导入的数据库被导入为未定义。但是,如果我将 db.collection(...)
更改为 firebase.firestore().collection(...)
它可以正常工作,但我不明白为什么。
【问题讨论】:
【参考方案1】:问题是你需要单独导入一些依赖项……这是一个很好的安全方法:
import firebase from "firebase/app";
require('firebase/firestore')
require('firebase/auth')
const config =
apiKey: "XXXXXX",
authDomain: "XXXXX",
databaseURL: "XXXXX",
projectId: "XXXXXXX",
storageBucket: "XXXXXX",
messagingSenderId: "XXXXXXX",
appId: "XXXXX"
;
firebase.initializeApp(config);
export const db = firebase.firestore();
export const auth = firebase.auth();
然后你的组件可以像这样导入 em:
import firebase from 'firebase/app'
import db, auth from "./firebase" // <--- or wherever the config file is
export default
methods:
signIn()
const provider = new firebase.auth.GoogleAuthProvider();
auth
.signInWithPopup(provider)
.then(result =>
const malakas =
userId: result.user.uid,
email: result.user.email,
displayName: result.user.displayName,
photoURL: result.user.photoURL
;
db.collection("malakes")
.doc(result.user.uid)
.set(spreadOparatorTest, merge: true );
)
.catch(err => console.log(err));
;
希望这会有所帮助!
【讨论】:
以上是关于导入 firebase.firestore() 返回未定义的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 错误:找不到符号导入 com.google.firebase.firestore.LoadBundleTaskProgress;
如何使用 ES6 语法将 Firebase Firestore 导入 create-react-app 项目
如何使用 Typescript 从 firebase-admin 导入 FieldValue?
Expo + firebase@9.0.1/9.0.0: @firebase/firestore:, Firestore (9.0.0): 无法到达 Cloud Firestore 后端
@firebase/firestore:Firestore (8.6.5):无法访问 Cloud Firestore 后端