import { logger } from '../utils/logger.js'; export default function errorHandler(err, req, res, next) { logger.error('Error:', err); // Mongoose validation error if (err.name === 'ValidationError') { const errors = Object.values(err.errors).map(e => e.message); return res.status(400).json({ error: 'Validation failed', details: errors }); } // Mongoose duplicate key error if (err.code === 11000) { const field = Object.keys(err.keyPattern)[0]; return res.status(409).json({ error: `Duplicate value for field: ${field}` }); } // JWT errors if (err.name === 'JsonWebTokenError') { return res.status(401).json({ error: 'Invalid token' }); } if (err.name === 'TokenExpiredError') { return res.status(401).json({ error: 'Token expired' }); } // Default error res.status(err.status || 500).json({ error: err.message || 'Internal server error', ...(process.env.NODE_ENV === 'development' && { stack: err.stack }) }); }