Files
ScommettiApp/backend-node/middleware/errorHandler.js
T
2026-03-26 22:46:03 +01:00

41 lines
1.2 KiB
JavaScript

const { AppError } = require('../shared/errors');
const ResponseHandler = require('../shared/response.handler');
const config = require('../config');
const errorHandler = (err, req, res, next) => {
if (config.isDevelopment) {
console.error('Error caught by middleware:', err);
}
if (err instanceof AppError) {
return ResponseHandler.error(res, err.message, err.statusCode, err.errors);
}
if (
err.name === 'SequelizeValidationError' ||
err.name === 'SequelizeUniqueConstraintError'
) {
const errors = err.errors
? err.errors.map((e) => ({ field: e.path, message: e.message }))
: null;
return ResponseHandler.badRequest(res, 'Validation error', errors);
}
if (err.name === 'ValidationError' && err.errors) {
const errors = Object.keys(err.errors).map((key) => ({
field: key,
message: err.errors[key].message,
}));
return ResponseHandler.badRequest(res, 'Validation error', errors);
}
if (err.name === 'CastError') {
return ResponseHandler.badRequest(res, 'Invalid ID format');
}
const message = config.isDevelopment ? err.message : 'Internal server error';
return ResponseHandler.internalError(res, message, err);
};
module.exports = errorHandler;