Files
habitica/website/src/middlewares/api-v3/errorHandler.js

33 lines
969 B
JavaScript

'use strict';
// The error handler middleware that handles all errors
// and respond to the client
let errors = require('../../libs/api-v3/errors');
let CustomError = errors.CustomError;
let InternalServerError = errors.InternalServerError;
module.exports = function (err, req, res, next) {
// TODO add logging
// In case of a CustomError class, use it's data
// Otherwise try to identify the type of error (mongoose validation, mongodb unique, ...)
// If we can't identify it, respond with a generic 500 error
let responseErr = err instanceof CustomError ? err : null;
if (!responseErr) {
// Try to identify the error...
// ...
// Otherwise create an InternalServerError and use it
// we don't want to leak anything, just a generic error message
responseErr = new InternalServerError();
}
return res
.status(responseErr.httpCode)
.json({
error: responseErr.name,
message: responseErr.message
});
};