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
1 Answer
Reset to default 17Found 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.