没有Firebase应用程序';[默认]';尝试构建专用消息传递系统时出现错误

没有Firebase应用程序';[默认]';尝试构建专用消息传递系统时出现错误,firebase,react-native,Firebase,React Native,我正在为React本机应用程序构建私人消息传递系统,但我无法修复expo应用程序中存在的错误。错误是: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app) 代码是: import FirebaseKeys from "./config"; import firebase from "firebase"; require("firebase/

我正在为React本机应用程序构建私人消息传递系统,但我无法修复expo应用程序中存在的错误。错误是:

Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app)
代码是:

import FirebaseKeys from "./config";
import firebase from "firebase";
require("firebase/firestore");
import { COLLECTIONS } from './constants'

class Fire {
    constructor() {
        firebase.initializeApp(FirebaseKeys);
    }

    auth = firebase.auth();

    firestore = firebase.firestore();

    messageRef = this.firestore.collection(COLLECTIONS.MESSAGES);

    async signIn() {
      try {
        const response = await this.auth.signInAnonymously();
        return {user: response.user };
      } catch (error) {
        return { error };
      }
    }

    async fetchMessages() {
      const messages = await this.messageRef
        .orderBy('created_at', 'desc')
        .limit(10)
        .get();

      return messages.docs;
    }

    async createMessage({ message, uid }) {
      await this.messageRef.add({
        message,
        user_id: uid,
        created_at: new Date()
      })
    }

    createAndSendMessage = async ({ message, avatar, receiverId, image }) => {
      return new Promise((res, rej) => {
        this.firestore
          .collection("messages")
          .add({
            message: message,
            avatar: avatar,
            senderId: (firebase.auth().currentUser || {}).uid,
            receiverId: receiverId,
            image: image,
            timestamp: firebase.database.ServerValue.TIMESTAMP
          }).then(ref => {
            res(ref);
          })
          .catch(error => {
            ref(error);
          });
      });
    };

    addPost = async ({ text, localUri }) => {
        const remoteUri = await this.uploadPhotoAsync(localUri, `photos/${this.uid}/${Date.now()}`);

        return new Promise((res, rej) => {
            this.firestore
                .collection("posts")
                .add({
                    text: text,
                    uid: this.uid,
                    timestamp: this.timestamp,
                    image: remoteUri
                })
                .then(ref => {
                    res(ref);
                })
                .catch(error => {
                    rej(error);
                });
        });
    };

    uploadPhotoAsync = (uri, filename) => {
        return new Promise(async (res, rej) => {
            const response = await fetch(uri);
            const file = await response.blob();

            let upload = firebase
                .storage()
                .ref(filename)
                .put(file);

            upload.on(
                "state_changed",
                snapshot => {},
                err => {
                    rej(err);
                },
                async () => {
                    const url = await upload.snapshot.ref.getDownloadURL();
                    res(url);
                }
            );
        });
    };

    createUser = async user => {
        let remoteUri = null;

        try {
            await firebase.auth().createUserWithEmailAndPassword(user.email, user.password);

            let db = this.firestore.collection("users").doc(this.uid);

            db.set({
                name: user.name,
                email: user.email,
                avatar: null
            });

            if (user.avatar) {
                remoteUri = await this.uploadPhotoAsync(user.avatar, `avatars/${this.uid}`);

                db.set({ avatar: remoteUri }, { merge: true });
            }
        } catch (error) {
            alert("Error: ", error);
        }
    };

    off() {
      this.db.off();
    };

    get db() {
      return firebase.database().ref("messages");
    }

    get uid() {
      return (firebase.auth().currentUser || {}).uid;
    }

    signOut = () => {
        firebase.auth().signOut();
    };

    get firestore() {
        return firebase.firestore();
    }

    get uid() {
        return (firebase.auth().currentUser || {}).uid;
    }

    get name() {
      return firebase.auth().currentUser;
    }

    get email() {
      return firebase.auth().currentUser.email;
    }

    get avatar() {
      return firebase.auth().currentUser.avatar;
    }

    get timestamp() {
        return Date.now();
    }
}

Fire.shared = new Fire();
export default Fire;


任何帮助都将不胜感激。提前谢谢你!(另外,如果您碰巧知道如何使用react native和firebase构建私人消息传递的教程,请在我正在努力完成整个任务时告诉我。)

您需要移动以下行-

auth = firebase.auth();
firestore = firebase.firestore();
messageRef = this.firestore.collection(COLLECTIONS.MESSAGES);

…在
firebase.initializeApp
行之后显式位于构造函数内部。当TypeScript传输时,它会在初始化之前放置那些不起作用的行。

auth
firestore
、和
messageRef
应该在
firebase.initializeApp
之后显式地在构造函数中。看看它的transpiles@Phix听起来像个答案。