提问人:RRR 提问时间:10/26/2023 更新时间:10/27/2023 访问量:33
表示默认错误处理程序不发送响应
Express default error handler not sending response
问:
我正在使用卸载图像,然后使用压缩图像。上传图像时,我正在检查文件类型,如果不是图像,则将 err 抛给全局 err 处理程序以跳过图像压缩。抛出的 err 由全局 err 处理程序处理,但无法从处理程序将响应发送到前端。尝试了所有资源,但似乎没有任何效果!multer
gm
路由:
router.post(
"/updateProfile",
auth,
upload(uploadUser.single("file")),
compressImages,
(req, res) => {}
上传中间件:
const imageFilter = (req, file, cb) => {
const allowedExtensions = /(jpg|jpeg|png)$/i;
const allowedMimetypes = /(image\/jpeg|image\/png)$/i;
if (
allowedExtensions.test(path.extname(file.originalname)) &&
allowedMimetypes.test(file.mimetype)
) {
cb(null, true);
} else {
cb(new CustomError("Invalid file type, only .jpeg/.png allowed!", 415));
}
};
const upload = (uploadType) => (req, res, next) => {
uploadType(req, res, (err) => {
if (err) {
return next(err);
}
return next();
});
};
全局错误处理程序:
const errorHandler = (err, req, res, next) => {
if (res.headersSent) {
console.log("headers sent");
return next(err);
}
if (err) {
res.setHeader("Content-Type", "application/json");
return res
.status(err.statusCode || 500)
.json(new ApiResponse(err.message || "Something went wrong!", null));
}
return next(err);
};
app.use(errorHandler);
答:
0赞
eekinci
10/27/2023
#1
在 中,仅当存在时才发送一个 respone,让它环绕其余部分:errorHandler
err
const errorHandler = (err, req, res, next) => {
if (err) {
if (res.headersSent) {
console.log("headers sent");
return next(err);
}
res.setHeader("Content-Type", "application/json");
return res
.status(err.statusCode || 500)
.json(new ApiResponse(err.message || "RRR, something went wrong!", null));
}
return next(err);
};
评论