FlowForge/backend/src/middleware/errorHandler.js

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