1

Hello guys I keep getting a firebase.database() is not a function error when trying to use firebase from a reactjs app

Here is how I am initializing my firebase from a file called Firebase.js

import * as firebase from "firebase";

const firebaseConfig = {
    apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
    authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
    databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
    projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
    storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
    messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGE_SENDER_ID,
    appId: process.env.REACT_APP_FIREBASE_APP_ID,
    measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID
};

class Firebase {
    constructor() {
        this.firebase = firebase.initializeApp(firebaseConfig);
    }
}

export default Firebase;

Here is my FirebaseContext.js file

import React from "react";

const FirebaseContext = React.createContext(null);

export const FirebaseProvider = FirebaseContext.Provider;
export default FirebaseContext;

Now in my index.js file I have this

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import * as serviceWorker from './serviceWorker';
import App from './pages/App';
import {BrowserRouter} from 'react-router-dom'
import Firebase from "./backend/configs/firebase";
import {FirebaseProvider} from "./contexts/FirebaseContext";

ReactDOM.render(
    <React.StrictMode>
        <FirebaseProvider value={new Firebase()}>
            <BrowserRouter>
                <App/>
            </BrowserRouter>
        </FirebaseProvider>
    </React.StrictMode>,
    document.getElementById('root')
);

Now, if I call the firebase object in one of my Functional Components like this

import FirebaseContext from "../contexts/FirebaseContext";
import React, {useContext, useEffect} from 'react';

export default function Dashboard() {
    const firebase = useContext(FirebaseContext);
    firebase
        .database()   //Firebase is not a function error happens here
        .ref("updates")
        .once('value')
        .then(function (snapshot) {
        });
}

In my Dashboard Component above I keep getting errors that firebase.database() is not a function.Please help. Thank you

1 Answer 1

1

I think this is how it should look like :

const { firebase } = useContext(FirebaseContext);
Sign up to request clarification or add additional context in comments.

3 Comments

OMG! I deserve to be FIRED!!! Lolz...Thanks alot. It has finally worked.
how about the usage in a class component, any idea?
I think you can try something like this : static contextType = FirebaseContext; const { firebase } = this.context

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.