如何处理MulterError: File too large错误并返回指定响应?
解决Multer文件过大错误时返回指定响应的问题
Multer抛出的File too large错误属于中间件层级错误,不会进入signup控制器的try/catch块,因此需要专门捕获处理。以下是两种可行方案:
方案一:单个路由针对性处理
修改路由代码,手动调用Multer中间件并捕获错误:
import multer from "multer"; import upload from "./path/to/your/multer-config"; import { signup } from "./path/to/signup-controller"; router.post('/signup', (req, res, next) => { upload.single('image')(req, res, (err) => { if (err instanceof multer.MulterError && err.code === 'LIMIT_FILE_SIZE') { return res.status(400).json({ error: "File size too large" }); } if (err) return next(err); signup(req, res, next); }); });
方案二:全局统一处理
添加全局错误处理中间件(需放在所有路由定义之后),统一处理所有Multer相关错误:
import multer from "multer"; app.use((err, req, res, next) => { if (err instanceof multer.MulterError) { if (err.code === 'LIMIT_FILE_SIZE') { return res.status(400).json({ error: "File size too large" }); } return res.status(400).json({ error: err.message }); } console.error(`Server Error: ${err.message}`); res.status(500).json({ error: "Internal Server Error" }); });
关键说明
- Multer错误通过
code字段区分类型,LIMIT_FILE_SIZE对应文件大小超限场景 - 方案一适合仅需在特定路由处理该错误的场景,方案二适合全局统一管控
内容的提问来源于stack exchange,提问作者Aditya Nagare
相关产品推荐
相关产品推荐

