42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
|
|
export const notFound = (req, res, next) => {
|
||
|
|
res.status(404).json({
|
||
|
|
error: "Not Found",
|
||
|
|
message: `Cannot ${req.method} ${req.originalUrl}`,
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
export const errorHandler = (err, req, res, next) => {
|
||
|
|
console.error("Error:", err);
|
||
|
|
|
||
|
|
// Handle validation errors
|
||
|
|
if (err.name === "ValidationError") {
|
||
|
|
return res.status(400).json({
|
||
|
|
error: "Validation Error",
|
||
|
|
details: err.errors,
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Handle duplicate key errors
|
||
|
|
if (err.code === 11000) {
|
||
|
|
return res.status(400).json({
|
||
|
|
error: "Duplicate Entry",
|
||
|
|
message: "A record with this value already exists",
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Handle JWT errors
|
||
|
|
if (err.name === "JsonWebTokenError") {
|
||
|
|
return res.status(401).json({
|
||
|
|
error: "Invalid Token",
|
||
|
|
message: "Your session is invalid",
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// Default error
|
||
|
|
const statusCode = err.statusCode || 500;
|
||
|
|
res.status(statusCode).json({
|
||
|
|
error: err.message || "Internal Server Error",
|
||
|
|
...(process.env.NODE_ENV === "development" && { stack: err.stack }),
|
||
|
|
});
|
||
|
|
};
|