2016-09-07 5 views
0

Я хотел бы перезапустить приложение в этом приложении с помощью NodeJS и NPM.Перезапустить текущий экземпляр с помощью NodeJS

Он не работает с child_process:

var exec = require('child_process').exec; 
exec('npm restart', function(error, stdout, stderr) { 
    console.log('stdout: ' + stdout); 
    console.log('stderr: ' + stderr); 
    if (error !== null) { 
     console.log('exec error: ' + error); 
    } 
}); 
+0

Почему вам нужно перезапустить? –

+0

Мне нужно перезапустить мой скрипт, потому что я пишу скрипт, чтобы получить новую версию кода с помощью 'GIT', но первым шагом является понимание того, как перезапустить сам скрипт ... – tonymx227

ответ

0

Если ваш мастер умер процесс, нет никакого способа, чтобы реанимировать его сам.

Посмотрите на Nodemon, чтобы перезапустить скрипт.

0

Другой вариант: вы можете использовать модуль forever npm для запуска и мониторинга приложения. Поэтому функция перезапуска, как это, если из API:

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

Или, если вы используете кластерный подход можно убить ребенок и вилку нового, как показано ниже [кластерной документации оформления заказа для узла,

cluster.on('exit', function (worker) { 
    logger.info('Worker ' + worker.id + ' died :(, starting another one.'); 
    cluster.fork(); 
}); 
+0

Хорошо, на моем сервере Ubuntu я попробовал PM2, но как перезапустить процесс после выполнения 'process.exit (1);'? – tonymx227

+0

Я не уверен, что pm2 поддерживает функцию перезапуска, как вы хотите, поэтому я рекомендую навсегда, pm2 нужно перезапустить извне, насколько мне известно. с pm2 вы можете искать сигналы и убедиться, что ваш узел перезапустится изящно. Где как всегда будет перезагружать ваш узел, как только он увидит его вниз, поэтому process.exit (1) убьет узел и навсегда запустит его снова. – Mattony

+0

Я тестировал с pm2, а pm2 поддерживает функции перезапуска как всегда. Я убил процесс, используя «/ restart», и увидел, что pm2 перезапустил его, вы можете проверить это, запустив приложение, используя pm2, и сделайте ** список pm2 ** после каждого повторного запуска. вы заметите, что столбец перезагрузки будет увеличивать его значение после каждого перезапуска – Mattony

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