webentwicklung-frage-antwort-db.com.de

firebase.firestore () ist keine Funktion beim Versuch, Cloud Firestore zu initialisieren

Beim Versuch, Firebase Cloud Firestore zu initialisieren, ist der folgende Fehler aufgetreten: 

Nicht abgerufener TypeError: WEBPACK_IMPORTED_MODULE_0_firebase . Firestore ist keine Funktion

Ich habe vorher Firebase mit npm install firebase --save installiert.

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();
}
27
Eyk Rehbein

Ich habe es behoben, indem ich mehrere Bibliotheken importierte: firebase und firebase/firestore. Dies liegt daran, dass die Kernbibliothek firebase die Firestore-Bibliothek nicht von Haus aus enthält. Der vollständige Code, um dies zu beheben, lautet also:

import * as firebase from 'firebase';
import 'firebase/firestore';
28
Eyk Rehbein

Stellen Sie zunächst sicher, dass Sie die neueste Version von Firebase haben:

npm install [email protected] --save

Als nächstes fügen Sie Firebase und Firestore hinzu:

const firebase = require("firebase");
// Required for side-effects
require("firebase/firestore");

Initialisieren Sie die Firebase-App:

firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

// Initialize Cloud Firestore through Firebase
var db = firebase.firestore();

quelle: https://firebase.google.com/docs/firestore/quickstart?authuser=0

11

Hoffe, dies hilft jemandem, der das gleiche Problem hat, wenn er eine Angular App für Firestore einsetzt.

In Angular 8 Projekt hatte ich den gleichen Fehler beim Deployment in Firestore. Ich habe ihn durch Hinzufügen eines weiteren Moduls behoben AngularFirestoreModule.

App.module.ts sieht so aus:

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

package.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",
...

UPDATE: Bei der Bereitstellung bei einem anderen Hostinganbieter hat dies nicht geholfen. In diesem Fall habe ich die ursprüngliche Firebase-Bibliothek hinzugefügt und es hat funktioniert.

import { firestore } from 'firebase'; 
1
Atilla Baspinar

Wenn Sie ein Update von einer früheren Version von Firebase durchführen und sich über dieses Problem sträuben, versuchen Sie const Firebase = require('firebase/firebase') anstelle von require('firebase/app')

1
bytecode

Wenn Ihr Code zufällig unter Hexerei steht und import firebase/firestore nicht funktioniert, fügen Sie ihn direkt hinzu:

import '@firebase/firestore/dist/esm/index';

Wenn es nicht da ist, dann:

npm install @firebase/firestore
1
Jose A

Ich glaube, ich habe es für Leute, die ein elektronisches Webpack verwenden. Die Lösung stammte aus einem Beitrag zum Importieren von Codemirror. https://github.com/electron-userland/electron-webpack/issues/81

Das hat bei mir funktioniert.

// package.json
{
  //...
  "electronWebpack": {
    "whiteListedModules": [
      "firebase"
    ]   
  },
  //...
}
0
btd
import { firebase } from '@firebase/app';
import '@firebase/firestore'

Wenn Sie auch mit auth arbeiten

import 'firebase/auth';
0
Tim Arney

Das Entfernen des node_modules - Verzeichnisses zusammen mit package-lock.json Und das anschließende Ausführen von npm install Haben das Problem behoben.

https://github.com/angular/angularfire2/issues/188

0

Wenn du wie ich bist und alles magst, was mit TypeScript geschrieben wurde (das ist übrigens der Zweck), kannst du Folgendes versuchen:

import * as firebase from "nativescript-plugin-firebase";
import { User, firestore } from "nativescript-plugin-firebase";

import * as firebaseapp from "nativescript-plugin-firebase/app";

Also kannst du so etwas machen:

firebase.getCurrentUser().then((user: User) => { /* something */ });

const mycollection : firestore.CollectionReference = firebaseapp.firestore().collection("mycollection");
0
Bruno Leitão

Ich hatte den gleichen Fehler und versuchte der offiziellen Website zu folgen, funktionierte aber nicht ..__ Dann habe ich einen Fehler gegoogelt und bin in diesem Beitrag gelandet.

Ich habe es versucht:

import * as firebase from 'firebase';
import 'firebase/firestore';

Es hat jedoch nicht für mich funktioniert, aber ich habe /firebase zur ersten Zeile import * as firebase from 'firebase/firebase'; hinzugefügt und alles funktioniert perfekt.

Es funktioniert auch mit require:

const firebase = require("firebase/firebase");
// Required for side-effects
require("firebase/firestore");
0
Yousaf Azabi