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