2017-10-08 20 views
9

Podczas próby zainicjowania Cloud Firestore pojawia się błąd Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_0_firebase__.firestore is not a function . Zainstalowałem wcześniej firefase z npm install firebase --save-dev.firebase.firestore() nie jest funkcją podczas próby zainicjowania Cloud Firestore

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(); 
} 
+0

Dlaczego masz zależność od firebase jako zależność * dev *? – Phil

+0

Należy również upewnić się, że wersja 4.5.0 jest całkiem nowa. Sprawdź pakiet 'pakiet.json' i upewnij się, że masz odpowiedni zestaw wersji – Phil

+0

Odinstalowałem firebase i zainstalowałem nową wersję z' npm install - zapisz firebase @ 4.5.0' ale nic to nie zmieniło:/@Phil – jsrbn

Odpowiedz

0

Aby korzystać Firestore funkcje chmura na node.js należy użyć admin.firestore() zamiast admin.database(). Należy również upewnić się, że moduł firebase-admin na package.json ma wartość do 5.4.1 lub nowszą. Wygląda jak coś w rodzaju:

{ 
    "name": "functions", 
    "description": "Cloud Functions for Firebase", 
    "dependencies": { 
    "firebase-admin": "^5.4.1", 
    "firebase-functions": "^0.7.0" 
    } 
} 
+5

Pytanie to nie wyjaśnia, ale dotyczy aplikacji internetowej klienta, a nie aplikacji serwera węzła. – riper

2

aktualizacja Firebase

npm install [email protected] --save 

dodać zarówno Firebase i FireStore

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

zainicjować

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

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

źródło: https://firebase.google.com/docs/firestore/quickstart?authuser=0

0

Kroki:

  1. npm instalują [email protected] flagą --save

  2. import następujących:

    import * as firebase from 'firebase'; 
    import 'firebase/auth'; 
    import 'firebase/database'; 
    import 'firebase/firestore'; 
    
  3. deklarować te zmienne globalnie

    export const environment = { 
        dev: { 
         apiKey: 'something....', 
         authDomain: 'something...', 
         databaseURL: 'something...', 
         projectId: 'something...', 
         storageBucket: 'something...', 
         messagingSenderId: 'something...' 
        } 
    }; 
    
    mFirestore: firebase.firestore.Firestore = null; 
    mDatabase: firebase.database.Database = null; 
    mAuth: firebase.auth.Auth = null; 
    mApp: firebase.app.App = null; 
    
  4. na jakiejś funkcji/konstruktora, wywołać tę funkcję

    initializeDatabases() { 
        this.mApp = firebase.initializeApp(environment.dev, 'development'); 
        this.mAuth = this.mApp.auth(); 
        this.mDatabase = this.mApp.database(); 
        this.mFirestore = this.mApp.firestore(); 
        // use console.log(...) to see if they are initialized correctly 
        // you can use multiple databases like this, just use another set of 4 variables with different config/options 
    } 
    
  5. Następnie użyj tak:

    readData() { 
        var doc = this.mFirestore.doc('...some path....'); 
        doc.get().then((data) => { 
          // do your tasks here 
        }); 
    } 
    

    Uwaga: Kiedyś to na jonowego 2 App, który używa Angular2 (& maszynopis).