我正在使用这个很棒的npm软件包 http-status-codes 这对状态代码有帮助,据我个人的看法 error handling 在Express中。
所以我的问题是,这将是解决错误的好方法吗?
这些错误(如果发生了……哈!)最终不会被抓住的 没事吧?
//my routes
router
.route('/')
.get(function(req, res, next) {
return UserModel.find({}, function(err, users) {
if (err) next(err);
res.json(users);
}).exec();
})
.post(async (req, res) => {
var newUser = new UserModel({
username: req.email,
password: req.password
});
newUser.save(function(err, user) {
res.json(user);
});
});
router.route('/:id').get(function(req, res) {
return UserModel.findById(req.params.id)
.then(user => {
if (!user) {
return res.status(404).end();
}
return res.status(200).json(user);
})
.catch(err => next(err));
});
// error handler
function errorHandler(err, req, res, next) {
// Set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// Log error
console.error(err.stack);
// Render the error page
res.status(err.status || 500);
// Default error message by HTTP code
res.render('error', {
title: HttpStatus.getStatusText(err.status),
message: HttpStatus.getStatusText(err.status)
});
}
// then pass errorHandler in this catch all
app.use(errorHandler, function(error, req, res, next) {
res.json({ message: error.message });
});