MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    include npm module like firebase module into our own MM module

    Scheduled Pinned Locked Moved Development
    9 Posts 2 Posters 2.1k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ? Offline
      A Former User @kevung
      last edited by

      @kevung
      I know what it is.
      MagicMirror standalone(kiosk) mode is running on Electron - frontend GUI framework. Unfortunately, it has its own node.js and chrome engine. Your current node module might not be compatible with Electron version. So you should re-build node modules for matching proper Electron.
      Normally electron-rebuild will be a help.

      In SERVERONLY mode, with Chrome browser as frontend, you might not get this error.

      1 Reply Last reply Reply Quote 0
      • ? Offline
        A Former User @kevung
        last edited by

        @kevung

        cd ~/MagicMirror/modules/MMM-hellotsuhan
        npm install --save-dev electron-rebuild
        ./node_modules/.bin/electron-rebuild
        

        This could be the solution. or not. :D

        1 Reply Last reply Reply Quote 0
        • K Offline
          kevung
          last edited by kevung

          Thanks bro!:smiling_face_with_open_mouth_smiling_eyes: this work for me!! after did below code then success to run the code already.

          cd ~/MagicMirror/modules/MMM-hellotsuhan
          npm install --save-dev electron-rebuild
          ./node_modules/.bin/electron-rebuild
          

          Now my node_helper.js is :

          const firebase = require ('firebase')
          var NodeHelper = require("node_helper")
          let countdown;
          var ref;
          var config = {
              apiKey: "AIzaSyAxi_kFKM3lxMZ9gnBMhwoPa7pxKX_e1BI",
              authDomain: "customerservice-ee487.firebaseapp.com",
              databaseURL: "https://customerservice-ee487.firebaseio.com",
              projectId: "customerservice-ee487",
              storageBucket: "customerservice-ee487.appspot.com",
              messagingSenderId: "466622230094"
          };
          if (!firebase.apps.length) {
              firebase.initializeApp(config);
          }
          module.exports = NodeHelper.create({
              start: function() {
                 ref = firebase.app().database().ref().child('countdown');
                 r ef.once('value').then(function (snap) {
                   console.log('snap.val()', snap.val());
                   countdown=snap.val();
                 });
            },
            socketNotificationReceived: function(notification, payload) { 
                switch(notification) {
                   case "DO_YOUR_JOB":   
                     ref.once('value').then(function (snap) {
                        console.log('snap.val()', snap.val());
          	      countdown=snap.val();
          	  });
                    this.sendSocketNotification("I_DID", countdown - payload);      
          	  break
                }
            }, 	
          })
          

          My MMM-hellotsuhan.js

          Module.register("MMM-hellotsuhan",{
              start: function (){
                  this.count = 0
              },
              getDom: function() {
                  var element = document.createElement("div")
          	element.className = "myContent"
          	element.innerHTML = "Hello, World! " + this.config.foo
                  var subElement = document.createElement("p")
          	subElement.id = "COUNT"
          	element.appendChild(subElement)
          	return element
              },
              notificationReceived: function(notification, payload, sender) { 
                  switch(notification) {
          	    case "DOM_OBJECTS_CREATED":
          	        var timer = setInterval(()=>{
          	            this.sendSocketNotification("DO_YOUR_JOB", this.count)
          	            this.count++
          	        }, 1000)
          	        break
          	    }
              },
              socketNotificationReceived: function(notification, payload) {
                  switch(notification) {
          	    case "I_DID":
          	        var elem = document.getElementById("COUNT")
          	        elem.innerHTML = "Count:" + payload
          	        break
          	   }
                  },
          });	
          
          K 1 Reply Last reply Reply Quote 0
          • K Offline
            kevung @kevung
            last edited by

            btw Thanks for the great tutorial for developing module from @Sean !!
            Head first developing MM module for extreme beginners

            ? 1 Reply Last reply Reply Quote 0
            • ? Offline
              A Former User @kevung
              last edited by A Former User

              @kevung
              I think you’d better define config in module js instead node_helper.js to be able to be redefined by user in config.js. You can move config values with sendSocketNotification.

              K 1 Reply Last reply Reply Quote 0
              • K Offline
                kevung @Guest
                last edited by

                @sean ok will try it out later =)

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Enjoying MagicMirror? Please consider a donation!
                MagicMirror created by Michael Teeuw.
                Forum managed by Sam, technical setup by Karsten.
                This forum is using NodeBB as its core | Contributors
                Contact | Privacy Policy