2017-10-08 58 views
9

嘗試初始化Cloud Firestore時出現錯誤Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_0_firebase__.firestore is not a function 。我之前安裝了npm install firebase --save-dev的Firebase。嘗試初始化Cloud Firestore時,firebase.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

爲什麼你將firebase依賴項保存爲* dev *依賴項? – Phil

+0

此外,你需要確保你有最新版本4.5.0。檢查你的'package.json',並確保你有正確的版本集 – Phil

+0

我卸載了firebase並安裝了新版本'npm install --save firebase @ 4.5.0',但它沒有改變任何東西:/ @Phil – jsrbn

回答

0

要使用Node.js的上雲Firestore功能,你應該使用admin.firestore()代替admin.database()。你也應該確保你的模塊firebase-adminpackage.json是高達5.4.1或以上。看起來有點像這樣的:

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

問題沒有闡明,但它是關於客戶端的網絡應用程序,而不是節點服務器應用程序。 – riper

2

更新火力

npm install [email protected] --save 

同時添加火力和公司的FireStore

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

初始化

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

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

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

0

步驟:

  1. NPM安裝[email protected] --save

  2. 進口如下:

    import * as firebase from 'firebase'; 
    import 'firebase/auth'; 
    import 'firebase/database'; 
    import 'firebase/firestore'; 
    
  3. 全局聲明這些變量

    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. 上的一些功能/構造函數,調用這個函數

    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. 然後,使用這樣的:

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

    注:我用這對使用Angular2(&打字稿)的離子2應用程序。