你好,我在express.js应用程序中遇到了一个捕获错误的问题。问题是next
调用控制器中的函数。当我调用这个函数时,错误中间件没有执行,我不知道为什么。我使用的是Typescript。
控制器:
const postCreateUser = async (
req: Request,
res: Response,
next: NextFunction
) => {
try {
const { email, username, password, retypePassword } = req.body;
const isEmailExist = await User.findOne({ where: { email: email } });
if (isEmailExist) {
let error: ResponseError = new Error("This email exists");
error.status = 422;
next(error);
}
const hashedPassword = await bcryptjs.hash(password, 12);
const user = await User.create({
username,
email,
password: hashedPassword,
});
res.status(201).json({ message: "User created succesfully." });
} catch (err) {
next(err);
}
};
错误中间件:
app.use(
(
error: ResponseError,
req: Request,
res: Response,
next: NextFunction
) => {
const status = error.status || 500;
console.log(error);
res.status(status).json({ message: error.message });
next();
}
);
1条答案
按热度按时间2nc8po8w1#