const errorHandler = (err, req, res, next) => { console.error('Error:', err.message); // Mongoose validation error if (err.name === 'ValidationError') { const messages = Object.values(err.errors).map((e) => e.message); return res.status(400).json({ message: 'Validation Error', errors: messages }); } // Mongoose duplicate key error if (err.code === 11000) { const field = Object.keys(err.keyValue)[0]; return res.status(400).json({ message: `Duplicate value for '${field}'. This already exists.` }); } // Mongoose cast error (invalid ObjectId) if (err.name === 'CastError') { return res.status(400).json({ message: `Invalid ${err.path}: ${err.value}` }); } // Default server error const statusCode = err.statusCode || 500; res.status(statusCode).json({ message: err.message || 'Internal Server Error', ...(process.env.NODE_ENV === 'development' && { stack: err.stack }), }); }; module.exports = errorHandler;