Forever module with node app executable file

690 views Asked by At

I am working on Node JS application.

In this I have to check first user is connected with internet or not. If yes then check KinectRuntime-v2.0_1409-Setup installed or not.. and further more such kind of validations are there. so I have used the following code in my entry script:

What I have Done:

broadcast.js: // entry file which we use to start app

var tempkinect = require('./controllers/tempkinect.js'); 
tempkinect.controller(app);

require('dns').lookup('google.com',function(err) {
  if (err){
    server.listen(8000, function(req, res){  
      open('http://localhost:8000/internetnotfound'); // internet not found page.
      return false;
     });    
   }
   else{
     try{
       var Kinect2 = require("kinect2");
       var kinect  = new Kinect2();
      }
      catch(ex) {
        server.listen(8000, function(req, res){
        open('http://localhost:8000/kinectnotfound');
        open('https://www.microsoft.com/en-in/download/confirmation.aspx?id=44559');
        return false;

      }
    } //else ends here
});

tempkinect.js file: // my controller file

module.exports.controller = function(app){

   app.get('/kinectnotfound',function(req,res){

        var errmsg = "KinectRuntime-v2.0_1409-Setup not installed on your computer. Download will start automatically, if not then";

        var link   = "https://www.microsoft.com/en-in/download/confirmation.aspx?id=44559";

        var click  = "Click Here!"

        res.render('initialerror',{errormessage:errmsg, downloadlink : link, clickhere: click, title : 'Kinect Not Found'});

   });

   app.get('/internetnotfound',  function(req,res){
        require('dns').lookup('google.com',function(err) {

            if (err){
                res.render('initialerror',{errormessage:'Please Connect Internet for Login.',downloadlink : '', clickhere : '', title : 'Internet Not Connected'});
            }
            else{
                res.redirect('/restart');
            }
        });
    });

   app.get('/restart', function (req, res, next) {
        process.exit(1);
    });

}

I am using enclose module which compiled the node js application and creates .exe file. Now, If I run application on my local machine using command prompt:

run > node broadcast.js

then in case of internet not found app displays corresponding page.( then I connect internet manually ) after connecting internet when I refresh the page it restarts the process, which is good as per required.

BUT, when I do the same using compiled application then it is giving me error:

What Error I am getting:

So can anyone please suggest what should be modified there? screenshot of error

Besides this, Forever should be installed as global on the system so it is working fine on my system but not on others with the compiled app.

1

There are 1 answers

1
Paul On

Looks like you already have something running at port 8000 (possibly other copy of your app). I would make sure your app port is configurable either through environment variables or command line options. Likewise make sure it can be shut down gracefully to release the port.

As for forever, there is no reason to install it globally, package it with the application and then its available at ./node_modules/.bin