42 lines
977 B
JavaScript
42 lines
977 B
JavaScript
const logger = require('../utils/logger');
|
|
|
|
/**
|
|
* Global error handling middleware
|
|
*/
|
|
const errorHandler = (err, req, res, next) => {
|
|
// Log the error
|
|
logger.error(`${err.name}: ${err.message}`, {
|
|
stack: err.stack,
|
|
path: req.path,
|
|
method: req.method
|
|
});
|
|
|
|
// Default error status and message
|
|
const status = err.status || 500;
|
|
const message = err.message || 'Internal Server Error';
|
|
|
|
// Handle specific error types
|
|
if (err.name === 'ValidationError') {
|
|
return res.status(400).json({
|
|
error: 'Validation Error',
|
|
message: err.message,
|
|
details: err.details
|
|
});
|
|
}
|
|
|
|
if (err.name === 'UnauthorizedError') {
|
|
return res.status(401).json({
|
|
error: 'Unauthorized',
|
|
message: 'Invalid or expired token'
|
|
});
|
|
}
|
|
|
|
// Return error response
|
|
res.status(status).json({
|
|
error: err.name || 'Error',
|
|
message: status === 500 ? 'Internal Server Error' : message
|
|
});
|
|
};
|
|
|
|
module.exports = { errorHandler };
|