Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 5x 5x 5x 5x 32x 8x 8x 24x 1x 23x 1x 22x 2x 20x 16x 4x 3x 1x 4x 5x | const { ZodError } = require("zod");
const jwt = require("jsonwebtoken");
const multer = require("multer");
const { AppError } = require("../lib/errors");
function errorHandler(err, req, res, next) {
if (err instanceof ZodError) {
return res.status(400).json({
message: "Invalid input",
issues: err.issues.map((i) => ({
path: i.path.join("."),
message: i.message,
})),
});
}
if (err.type === "entity.parse.failed") {
return res.status(400).json({ message: "Invalid JSON in request body" });
}
if (err instanceof multer.MulterError) {
return res.status(400).json({ message: err.message });
}
if (err instanceof jwt.JsonWebTokenError || err instanceof jwt.TokenExpiredError) {
return res.status(401).json({ message: "Invalid token" });
}
if (err instanceof AppError) {
return res.status(err.status).json({ message: err.message, msg: err.message });
}
if (req.log) {
req.log.error({ err }, "unhandled error");
} else {
console.error(err);
}
res.status(500).json({ message: "Internal server error" });
}
module.exports = errorHandler; |