在 Vue js 应用程序中在哪里初始化 firebase?

luk*_*luk 6 javascript firebase vue.js firebase-realtime-database

  // Initialize Firebase
  var config = {
    apiKey: "...",
    authDomain: "my-project.firebaseapp.com",
    databaseURL: "https://my-project.firebaseio.com",
    projectId: "my-project",
    storageBucket: "my-project.appspot.com",
    messagingSenderId: "..."
  };
  firebase.initializeApp(config);
Run Code Online (Sandbox Code Playgroud)

当我在 index.html 或 main.js 中初始化 Firebase 时,在这两种情况下都会出现错误

Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app).
Run Code Online (Sandbox Code Playgroud)

我必须在我的组件(仪表板)中初始化它。在我的组件之一中初始化 firebase 是正确的方法吗?为什么我可以在 main.js 中执行此操作?

Ren*_*nec 2

一种方法是拥有firebaseConfig.js如下所示的文件

import firebase from 'firebase/app';
import 'firebase/firestore';

var config = {
    apiKey: "....",
    authDomain: ".....",
    databaseURL: ".....",
    ......
};
firebase.initializeApp(config);

const db = firebase.firestore();

// date issue fix according to firebase
const settings = {
    timestampsInSnapshots: true
};
db.settings(settings);

export {
    db
};
Run Code Online (Sandbox Code Playgroud)

并在每个组件(需要 Firebase 的地方)中导入并使用它,如下所示:

<template>
    ......
</template>
<script>
const firebase = require('../firebaseConfig.js');
export default {
  name: 'xxxxx',
  data() {
    return {
      ....
    };
  },
  methods: {
    fetchData() {
      firebase.db
        .collection('xxxxx')
        .get()
        ..... //Example of a call to the Firestore database
    }
  }
  .... 
};
</script>
Run Code Online (Sandbox Code Playgroud)

  • 每次导入时,这不会初始化 firebase 吗? (11认同)