Firebase:Cannot find the firebase namespace; be sure to include firebase-app.js before this library. I got that error. How should I fix my code?

Viewed 3163

When I did "firebase deploy" to build the auth function, I got the error Cannot find the firebase namespace; be sure to include firebase-app.js before this library.

And then I tried to fix because I think I haven't successfully required firebase, I did firebase deploy after doing npm install --save firebase. I could see the firebasedirectory in my module. but, I couldn't success deploy.

I want to fix this error. Where does the firebase spacename refer to??

this is error

Error: Error occurred while parsing your function triggers.

Error: Cannot find the firebase namespace; be sure to include firebase-app.js before this library.
    at /Users/boutakuma/Desktop/socialapp/firebase_function/functions/node_modules/@firebase/auth/dist/auth.js:430:352
    at /Users/boutakuma/Desktop/socialapp/firebase_function/functions/node_modules/@firebase/auth/dist/auth.js:430:455
    at Object.<anonymous> (/Users/boutakuma/Desktop/socialapp/firebase_function/functions/node_modules/@firebase/auth/dist/auth.js:430:461)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)

this is my index.js

const functions = require('firebase-functions');
const admin = require('firebase-admin');

const express = require('express');
const app = express();

admin.initializeApp();

var firebaseConfig = {
    apiKey: "***********************",
    authDomain: "************************",
    databaseURL: "************************",
    projectId: "************************",
    storageBucket: "************************",
    messagingSenderId: "************************",
    appId: "************************",
    measurementId: "************************"
  };

// require firebase
const firebase = require('firebase');
firebase.initializeApp(firebaseConfig);

app.get('/screams',(req,res) => {
    admin
    .firestore()
    .collection('screams')
    .orderBy('createdAt','descs')
    .get()
     .then((data) => {
         let screams = [];
         data.forEach((doc) => {
             screams.push({
                 screamId: doc.id,
                 body: doc.data().body,
                 userHandle: doc.data().userHandle,
                 createdAt: doc.data().createdAt, 
             });
         });
         return res.json(screams);
     })
     .catch(err => console.error(err));
})


app.post('/scream',(req,res) => {
    const newScream = {
        body: req.body.body,
        userHandle: req.body.userHandle,
        createdAt: new Date().toISOString()
    };
    admin.firestore()
     .collection('screams')
     .add(newScream)
     .then(doc => {
         res.json({ message: `document ${doc.id} created successfully` });
     })
     .catch(err => {
         res.status(500).json({ error: ' somethihg went wrong '});
         console.error(err);
     });
});

// Signup route

app.post('/signup', (req,res)=> {
    const newUser = {
        email: req.body.email,
        password: req.body.password,
        confirmPassword: req.body.confirmPassword,
        handle: req.body.handle,
    };

    //Todo balidate data
    firebase
    .auth()
    .createUserWithEmailAndPassword(newUser.email,newUser.password)
    .then((data) => {
        return res.status(201).json({ message: `user ${data.user.uid} signed up successgfully` });
    })
    .catch((err) => {
        console.error(err);
        return res.status(500).json({ error: err.code });
    });
});

exports.api = functions.https.onRequest(app);

directory construction

.
└── functions
    └── node_modules
        :
        ├── extend
        ├── fast-text-encoding
        ├── faye-websocket
        ├── finalhandler
        ├── firebase
        ├── firebase-admin
        ├── firebase-functions
        ├── form-data
        ├── forwarded
        :

Supplement: When I did firebase deploy before adding auth function or require firebase , this code was working. I think maybe it has wrong around auth or require('firebase');

How should I fix my code ? and What do you think is the cause? thank you for reading my question!

Development version

Node.js: v10.15.3

firebase : 7.15.0

firebase-admin: 7.0.0

firebase-functions: 3.6.2

2 Answers

I could solve this problem! I found that the Cause is relating around firebase version. So, I did the following:

  1. I did downgrade npm install --save firebase@5.9.0
  2. I wrote require('firebase') on my js sheet and save.
  3. I did firebase deploy ↓ I got Deploy complete!

Reference source

https://github.com/firebase/firebase-tools/issues/609

For anybody looking for an answer,

I came across issue:

Error: Cannot find the firebase namespace; be sure to include firebase-app.js before this library.
at /Users/fahmiduddin/Dropbox/Fahmid/DeliverEnd/Server/shippertechfirestore/functions/node_modules/@firebase/auth/dist/auth.js:431:352

Solved it by going to functions -> node_modules -> @firebase and deleting the auth folder.

Related