NodeJS Express Error Handling

Error

Express Guide : Express error handling

  • Routing
  • Database operation
  • Logic

etc…

Development

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
	});
  });
}

Finally, error handled error(error.jade, error.ejs) default render

Production

In case of generating from command, default error handler is implemented.

Express3

app.use(express.errorHandler());

Express4

app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

Custom

Simple Middleware

app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('error 500');
});

Next

app.use(function(err, req, res, next) {
  if (err.status != 404) {
    return next();
  }
  res.send(err.message || '** no unicorns here **');
});

Override

var bodyParser = requier('body-parser');
var methodOverride = require('method-override');
app.use(bodyParser());
app.use(methodOverride());
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);

// logErrors
function logErrors(err, req, res, next) {
  console.error(err.stack);
  next(err);
}

function clientErrorHandler(err, req, res, next) {
  if (req.xhr) {
    res.status(500).send({ error: 'something wrong!' });
  }
  else {
    next(err);
  }
}

function errorHandler(err, req, res, next) {
  res.status(500);
  res.render('error', { error: err });
}