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