2017-02-02 4 views
0

Я работаю над приложением Node JS.Модуль Forever с исполняемым файлом узла приложения

В этом я должен проверить, что первый пользователь подключен к интернету или нет. Если да, то установите KinectRuntime-v2.0_1409-Setup или нет .. и еще больше такого рода проверки. так что я использовал следующий код в моем ввода сценария:

Что я сделал:

broadcast.js: // запись файла, который мы используем для запуска 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 файл: // мой файл контроллер

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); 
    }); 

} 

Я использую enclose модуль, который скомпилировал приложение js узла и создает файл .exe. Теперь, если я запускаю приложение на моем локальном с помощью командной машины строке:.

run > node broadcast.js

то в случае интернета не найдено приложение отображает соответствующую страницу (я подключить интернет вручную) после подключения в Интернет при обновлении страницы она перезапускает процесс, который хорош по требованию.

НО, когда я делаю то же самое с помощью скомпилированного приложения, то он дает мне ошибку:

Что ошибки я получаю:

Так может кто-нибудь предложить, пожалуйста, что должно быть изменено там? screenshot of error

Помимо этого, навсегда должен быть установлен как глобальный в системе, так что работает отлично на моей системе, но не на других с скомпилированного приложения.

+0

Ваша ссылка ошибка сломана. – Paul

ответ

0

Похоже, что у вас уже есть что-то работающее в порту 8000 (возможно, другая копия вашего приложения). Я бы удостоверился, что ваш порт приложения настраивается либо через переменные среды, либо из командной строки. Аналогично убедитесь, что он может быть отключен изящно, чтобы освободить порт.

Что касается навсегда, нет никаких причин, чтобы установить его в глобальном масштабе, пакет его с приложением, а затем его получить на ./node_modules/.bin

+0

Нет, я пробовал без global, тогда это не разрешено в exe .. :( – Deep

Смежные вопросы