Eyk*_*ein 42 javascript firebase google-cloud-firestore
当我尝试初始化Firebase Cloud Firestore时,遇到以下错误:
未捕获的TypeError:WEBPACK_IMPORTED_MODULE_0_firebase .firestore不是函数
我npm install firebase --save
以前安装了firebase .
import * as firebase from 'firebase';
import router from '../router';
const config = {
apiKey: "a",
authDomain: "a",
databaseURL: "a",
projectId: "a",
storageBucket: "a",
messagingSenderId: "a"
};
if(!firebase.apps.length){
firebase.initializeApp(config);
let firestore = firebase.firestore();
}
Run Code Online (Sandbox Code Playgroud)
Eyk*_*ein 50
我通过导入多个库来修复它:firebase
和firebase/firestore
.那是因为firebase
核心库本身不包含firestore库.所以修复它的完整代码是:
import * as firebase from 'firebase';
import 'firebase/firestore';
Run Code Online (Sandbox Code Playgroud)
Ash*_*sar 25
如果您使用的是 firebase 版本 9,那么您需要使用以下版本:
// v9 compat packages are API compatible with v8 code
import firebase from 'firebase/compat/app';
import 'firebase/compat/firestore';
Run Code Online (Sandbox Code Playgroud)
以下是从版本 8 升级到版本 9 的链接https://firebase.google.com/docs/web/modular-upgrade。
请记住:compat 库是一个临时解决方案,将在未来的主要 SDK 版本(例如版本 10 或版本 11)中完全删除。您的最终目标是删除兼容代码并在应用程序中仅保留版本 9 模块化样式代码。
目前,您可以使用 compat 库,但将来您应该尝试从 compat 切换到模块化。
RM *_*Vos 12
首先,确保你有最新版本的firebase:
npm install firebase@4.12.0 --save
Run Code Online (Sandbox Code Playgroud)
接下来,添加firebase和firestore:
const firebase = require("firebase");
// Required for side-effects
require("firebase/firestore");
Run Code Online (Sandbox Code Playgroud)
初始化firebase应用程序:
firebase.initializeApp({
apiKey: '### FIREBASE API KEY ###',
authDomain: '### FIREBASE AUTH DOMAIN ###',
projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});
// Initialize Cloud Firestore through Firebase
var db = firebase.firestore();
Run Code Online (Sandbox Code Playgroud)
来源:https://firebase.google.com/docs/firestore/quickstart?authuser = 0
小智 8
我也为此苦苦挣扎了一段时间。我最终所做的事情非常简单。
对于版本 9 及更高版本,只需执行以下操作
import firebase from 'firebase/compat/app';
import 'firebase/compat/firestore';
import 'firebase/compat/auth';
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey:
authDomain:
projectId:
storageBucket:
messagingSenderId:
appId:
};
// Initialize Firebase
const firebaseApp = firebase.initializeApp(firebaseConfig);
const db = firebaseApp.firestore;
const auth = firebaseApp.auth();
export { auth };
export default db;
//cheers
Run Code Online (Sandbox Code Playgroud)
希望这对在将 Angular 应用程序部署到 Firestore 时遇到同样问题的人有所帮助。
在 Angular 8 项目中,我在部署到 Firestore 时遇到了同样的错误。我通过添加另一个模块AngularFirestoreModule 来修复它。
App.module.ts 是这样的:
...
import { AngularFireModule } from '@angular/fire';
import { AngularFirestore, AngularFirestoreModule } from '@angular/fire/firestore'; // << Note AngularFirestoreModule !!!
import { AngularFireDatabaseModule } from '@angular/fire/database';
...
imports: [
BrowserModule,
FormsModule,
AngularFireModule.initializeApp(environment.firebaseConfig),
AngularFirestoreModule,
AngularFireDatabaseModule,
...
Run Code Online (Sandbox Code Playgroud)
包.json:
...
"dependencies": {
"@angular/animations": "~8.2.2",
"@angular/common": "~8.2.2",
"@angular/compiler": "~8.2.2",
"@angular/core": "~8.2.2",
"@angular/fire": "^5.2.1",
"@angular/forms": "~8.2.2",
"@angular/platform-browser": "~8.2.2",
"@angular/platform-browser-dynamic": "~8.2.2",
"@angular/router": "~8.2.2",
"ajv": "^6.10.2",
"bootstrap-scss": "^4.3.1",
"core-js": "^2.5.4",
"firebase": "^6.4.0",
...
Run Code Online (Sandbox Code Playgroud)
更新:当我部署到其他托管服务提供商时,这没有帮助。对于这种情况,我添加了原始的 firebase 库并且它起作用了。
import { firestore } from 'firebase';
Run Code Online (Sandbox Code Playgroud)
import { firebase } from '@firebase/app';
import '@firebase/firestore'
Run Code Online (Sandbox Code Playgroud)
如果您也在使用身份验证
import '@firebase/auth';
Run Code Online (Sandbox Code Playgroud)
您可以创建一个单独的组件来使用凭据在您的应用程序上初始化 Firebase。
firebase-context.js
import * as firebase from 'firebase'
import 'firebase/firestore';
const firebaseConfig = {
apiKey: "XXXX",
authDomain: "XXXXX.firebaseapp.com",
databaseURL: "https://XXXX-app-web.firebaseio.com",
projectId: "XXXX",
storageBucket: "XXXX-app-web.appspot.com",
messagingSenderId: "XXXXXX",
appId: "1:XXX:web:XXXX",
measurementId: "G-XXXX"
};
export default !firebase.apps.length
? firebase.initializeApp(firebaseConfig).firestore()
: firebase.app().firestore();
Run Code Online (Sandbox Code Playgroud)
如果需要处理数据库操作,不需要每次都调用初始化方法,可以使用之前创建的通用组件方法。
import FirebaseContext from "./firebase-context";
export const getList = () => dispatch => {
FirebaseContext.collection("Account")
.get()
.then(querySnapshot => {
// success code
}).catch(err => {
// error code
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33051 次 |
最近记录: |