Firebase not working in electron app when packed using electron packager

Viewed 149

I recently built an electron application which utilizes firebase. It works well in the dev environment but when I package it as an exe, the firebase does not work.

How to resolve this ?

My package.json

{
  "name": "powerplant",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "electron": "electron ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "electron": "^9.1.2",
    "electron-log": "^4.2.2",
    "firebase": "^7.17.2",
    "html-to-text": "^5.1.1",
    "messagebird": "^3.5.0",
    "msg91": "0.0.6",
    "node-telegram-bot-api": "^0.50.0",
    "sendotp": "^1.2.9",
    "speakeasy": "^2.0.0",
    "springedge": "^1.0.5",
    "twilio": "^3.48.2"
  },
  "devDependencies": {
    "electron-packager": "^15.0.0"
  }
}

My app.js I have imported firebase in my app.js It works perfectly in development, but doesn't work in production.

//  ---------------- IMPORTS ----------------------------------------------

const electron = require('electron');
const {app,BrowserWindow,ipcMain} = electron;

// replace the value below with the Telegram token you receive from @BotFather
const TelegramBot = require('node-telegram-bot-api');
const token = '';
const bot = new TelegramBot(token, {polling: true});

//  ------------- FIREBASE IMPORT AND INITIALIZE ----------------------
var firebase = require('firebase');
const { DataSessionPage } = require('twilio/lib/rest/wireless/v1/sim/dataSession');
var firebaseConfig = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: "",
    appId: "",
    measurementId: ""
  };
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
var database=firebase.database();

 // this is sorta overall process(Electron App)
let mainWindow;
app.on('ready', () => {

    let senderPhoneNumber
    let senderName;

    console.log('App is now ready!!!');
    mainWindow=new BrowserWindow({webPreferences:{
        nodeIntegration: true
    }});
    mainWindow.loadURL(`file://${__dirname}/templates/loginform.html`)
    mainWindow.webContents.openDevTools()

    ipcMain.on("register:form",(event,data)=>{
        mainWindow.loadURL(`file://${__dirname}/templates/registerform.html`)
    })

    ipcMain.on("submit:register",(event,data)=>{
        var employeeId=data['empid']
        var phone=data['phone']
        var name=data['name']
        var password=data['password']
        var confirm=data['confirm']
        if(password==confirm){
            database.ref('users/'+employeeId).on('value',(snapshot)=>{
                if(snapshot.val()==null){
                    database.ref('users/'+employeeId).set({
                        'phone':phone,
                        'name':name,
                        'password':password,
                    })
                }
            })
            mainWindow.loadURL(`file://${__dirname}/templates/loginform.html`)
        }
    })

    ipcMain.on("submit:login",(event,data)=>{
        var employeeId=data["empid"];
        var password=data["password"];
        database.ref('users/'+employeeId).on('value',(snapshot)=>{
            if(snapshot.val()!=null){
                if(snapshot.val()['password']==password){
                     senderName=snapshot.val()['name']
                     senderPhoneNumber=snapshot.val()['phone']
                     mainWindow.loadURL(`file://${__dirname}/templates/index.html`)
                }
            }
        })
    })
    ipcMain.on("submit:data",(event,data)=>{
        // var text=
        // `
        // Sir, 
        // ${senderName}

        // ${senderPhoneNumber}
        
        // `;
        // for(key in data){
        //     text+=`${key}   ${data[key]} \n`
        // }

        var text=`
        ${data["DATE"]} ${data["SHIFT"]} Shift Report
        
        Stage 1&2

        DC D/M/Y ${data["Stage 1&2 DC/D"]}/${data["Stage 1&2 DC/M"]}/${data["Stage 1&2 DC/Y"]}
        SG D/M/Y ${data["Stage 1&2 SG/D"]}/${data["Stage 1&2 SG/M"]}/${data["Stage 1&2 SG/M"]}


        Stage 3

        DC D/M/Y ${data["Stage 3 DC/D"]}/${data["Stage 3 DC/M"]}/${data["Stage 3 DC/Y"]}
        SG D/M/Y ${data["Stage 3 SG/D"]}/${data["Stage 3 SG/M"]}/${data["Stage 3 SG/M"]}

        Day Gen : ${data["Day Gen"]}
        Day PLF: ${data["Day PLF"]}
        Monthly PLF : ${data["Monthly PLF"]}
        Yearly PLF : ${data["Yearly PLF"]}
        APC: ${data["APC"]}

        Coal Receipt/Consumption/Stock
        ${data["RECEIPT"]}/${data["CONS"]}/${data["STOCK"]}

        1% Ramp Rate Status
        Stage 1&2 : ${data["RAMP RATE STAGE 1&2"]}
        Stage 3: ${data["RAMP RATE STAGE 3"]}

        U1 : ${data["MAJOR ISSUES UNIT 1"]}
        U2 : ${data["MAJOR ISSUES UNIT 2"]}
        U3 : ${data["MAJOR ISSUES UNIT 3"]}
        U4 : ${data["MAJOR ISSUES UNIT 4"]}
        U5 : ${data["MAJOR ISSUES UNIT 5"]}
        U5 : ${data["MAJOR ISSUES UNIT 6"]}
        U5 : ${data["MAJOR ISSUES UNIT 7"]}

        Stage 1 Offsites
        Ash Series: ${data["ASH SERIES"]}
        ATs: ${data["ATs"]}
        ASH TRUCKS: ${data["ASH TRUCKS"]}
        Silo levels: ${data["Stage 1 Silo Levels"]}
        St 1 RW Level: ${data["St 1 RW Level"]}
        St 2 CW sump level : ${data["St2 CW sump level"]}


        Stage 2 Offsites
        Dry Ash Sys I/s: ${data["Dry ash sys I/S"]}
        Ash Lines not avl: ${data["Ash Lines not avl"]}
        Vessels NA: ${data["Vessels NA"]}
        Silo Levels: ${data["Silo levels"]}
        BAS: ${data["BAS"]}
        FAS: ${data["FAS"]}

        Stage 3 Offsites
        ESP Passes Dry : ${data["ESP Passes Dry"]}
        ESP Passes Wet : ${data["ESP Passes Wet"]}
        Series Avl : ${data["Series Avl"]}
        Series Not Avl: ${data["Series Not Avl"]}
        Ash Trucks: ${data["Ash Trucks"]}
        Silo Levels : ${data["Stage 3 Silo Levels"]}
        

        Regards
        SCE NAME : ${data["SCE NAME"]}
        SCE GROUP: ${data["SCE GROUP"]}

        `


        bot.sendMessage("@ntpcrgdm",text)
    })


});


// the above listener that is attached can be broken down to three -
// app - thing we are listening to
// ready - event we are listening for
// function to call when event occurs
0 Answers
Related