Spaces:
Sleeping
Sleeping
| 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; | |