Custom error handler:
export const errorHandler: ErrorRequestHandler = (err, _, res) => {
if (err instanceof HttpError) {
res.status(err.statusCode).json({
message: err.message
});
return;
}
res.status(500).json({
message: err.message,
});
};
Handler where I throw the error:
export const registerHandler: Handler = async (req, res) => {
const { username, password } = req.body as {
username: string | undefined;
password: string | undefined;
};
if (!username || !password) {
throw new UnprocessableEntity();
}
try {
const user = await User.register(username, password);
req.logIn(user, (err) => {
console.log(err);
});
res.json({
user,
});
} catch (error) {
throw new BadRequest(error.message);
}
};
The error handler middleware works as expected when everywhere except when it is thrown in catch block of the registerHandler. It's driving me crazy. Can somebody explain why this is so?