When I install an express scaffold app
express
Then run the npm install
npm install
and then run supervisor
supervisor app
I get
Starting child process with 'node app'
Program node app exited with code 0
The app.js file is a basic default express instance.
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
/// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
/// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
The app that the generator creates calls
./bin/wwwthat includesapp.jsand then starts listening for traffic.app.jsdoes not do this itself.I think this is important to understand.
app.listenis not being called inapp.jsbut is called in./bin/www...and this is why you get theexit 0result. When you callapp.jsand not./bin/wwwit runs through the file but because is no command to listen for traffic, the program ends normally...i.e. without having done anything.That said, you have two options..
Option 1
If you have a
./bin/wwwfile, you could runsupervisor ./bin/wwwto get things started.Option 2
If you don't have the
./bin/wwwfile for whatever reason, you can edit your app file to look like this.In your app listing, replace
with this
Important Note
While that edit will start the app listening and you won't get an
exit 0any more, I cannot guarantee that the app won't crash with some other error if other files and directories are missing. For example, if theroutesdirectory isn't present, then the declarations requiringroutes/indexandroutes/userswill fail and other bad things will happen.