最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Restart a node.js app from code level - Stack Overflow

programmeradmin2浏览0评论

I've an app which initially creates static config files (once) and after files were written I need to reinitialize/restart the application. Is there something to restart a node.js app from itself?

This is required cause I've an application running in two runlevels in node.js. The initial one starts completly synchronus and after this level has been completed app is in async runlevel in a previously started environment.

I know there are tools like nodemon but that's not what I need in my case.

I tried to kill the app via process.kill() which is working but I can't listen to the kill event:

 // Add the listener
 process.on('exit', function(code) {
    console.log('About to exit with code:', code);
    // Start app again but how?
 });

 // Kill application
 process.kill();

Or is there a better, cleaner way to handle this?

I've an app which initially creates static config files (once) and after files were written I need to reinitialize/restart the application. Is there something to restart a node.js app from itself?

This is required cause I've an application running in two runlevels in node.js. The initial one starts completly synchronus and after this level has been completed app is in async runlevel in a previously started environment.

I know there are tools like nodemon but that's not what I need in my case.

I tried to kill the app via process.kill() which is working but I can't listen to the kill event:

 // Add the listener
 process.on('exit', function(code) {
    console.log('About to exit with code:', code);
    // Start app again but how?
 });

 // Kill application
 process.kill();

Or is there a better, cleaner way to handle this?

Share Improve this question asked Jul 10, 2014 at 2:45 BernieBernie 5,0555 gold badges43 silver badges73 bronze badges 12
  • 1 If I got your problem correctly, I think nodmon will help you. – Mritunjay Commented Jul 10, 2014 at 2:50
  • Here is a list of tools which will help you I think. – Mritunjay Commented Jul 10, 2014 at 2:51
  • @Mritunjay wrote nodemon is not what I need here cause the restart is not required for changes on development files – Bernie Commented Jul 10, 2014 at 2:54
  • ohh sorry, then I think these won't be helpful for you – Mritunjay Commented Jul 10, 2014 at 2:57
  • I have a suggestion which will handle your issue but I don't know whether you want things to be done this way. Try using forever : npmjs.org/package/forever By using forever whenever you kill your application via preocess.kill() it will be automatically stated again. – Okky Commented Jul 10, 2014 at 4:36
 |  Show 7 more comments

1 Answer 1

Reset to default 17

Found a working case to get node.js restarted from app itself:

Example:

// Optional part (if there's an running webserver which blocks a port required for next startup
try {
  APP.webserver.close(); // Express.js instance
  APP.logger("Webserver was halted", 'success');
} catch (e) {
  APP.logger("Cant't stop webserver:", 'error'); // No server started
  APP.logger(e, 'error');
}


// First I create an exec command which is executed before current process is killed
var cmd = "node " + APP.config.settings.ROOT_DIR + 'app.js';

// Then I look if there's already something ele killing the process  
if (APP.killed === undefined) {
  APP.killed = true;

  // Then I excute the command and kill the app if starting was successful
  var exec = require('child_process').exec;
  exec(cmd, function () {
    APP.logger('APPLICATION RESTARTED', 'success');
    process.kill();
  });
}

The only con I can see here is to loose outputs on console but if anything is logged into logfiles it's not a problem.

发布评论

评论列表(0)

  1. 暂无评论