Модуль Forever с исполняемым файлом приложения узла

Я работаю над приложением Node JS.

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

Что я сделал:

broadcast.js: // файл входа, который мы используем для запуска приложения

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, который компилирует приложение node js и создает файл .exe. Теперь, если я запускаю приложение на своем локальном компьютере с помощью командной строки:

запустить > узел широковещательный.js

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

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

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

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

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


person Deep Kakkar    schedule 02.02.2017    source источник
comment
Ваша ссылка с ошибкой не работает.   -  person Paul    schedule 02.02.2017


Ответы (1)


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

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

person Paul    schedule 02.02.2017
comment
Нет, я пробовал без глобального, тогда он не позволяет в exe .. :( - person Deep Kakkar; 02.02.2017