Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express 带中间件的快速路由器错误处理_Express_Middleware_Multer_Express Router - Fatal编程技术网

Express 带中间件的快速路由器错误处理

Express 带中间件的快速路由器错误处理,express,middleware,multer,express-router,Express,Middleware,Multer,Express Router,我有一个关于中间件错误处理的问题,特别是multer。我有这条路线: router.post('/',saveFile,(req,res,next)=>{ //代码的其余部分 }) 然后我有了saveFile中间件: const multer=require('multer')) const storage=multer.diskStorage({ 目的地:(请求、res、cb)=>{ cb(空“./上传/”) }, 文件名:(req、res、cb)=>{ cb(空,新日期().getTime

我有一个关于中间件错误处理的问题,特别是multer。我有这条路线:

router.post('/',saveFile,(req,res,next)=>{
//代码的其余部分
})
然后我有了saveFile中间件:

const multer=require('multer'))
const storage=multer.diskStorage({
目的地:(请求、res、cb)=>{
cb(空“./上传/”)
},
文件名:(req、res、cb)=>{
cb(空,新日期().getTime()+'.jpg')
}
})
常量文件过滤器=(请求、文件、cb)=>{
if(file.mimetype==='image/jpeg')cb(null,true)
cb(空,假)
}
const upload=multer({
存储:存储,
限制:{
文件大小:1024*1024*3//最多3兆字节
},
fileFilter:fileFilter
})
const saveFile=upload.single('文件')
module.exports.saveFile=saveAudio

我遇到的问题是,当我上载一个字段名不是
file
的文件时,我得到一个错误
MulterError:Unexpected field
。我想设法抓住这个错误。但我甚至不知道该在哪里做。我该怎么做?

答案很简单,但没有人回答

在安装express的app.js中,您可以创建一个中间件来处理错误

app.use((error,req,res,next)=>errorHandlers(error,req,res,next))
最后把它放了

然后
ErrorHandlers.js

module.exports=函数(错误、请求、恢复、下一步){
如果(error.name=='MulterError'){
//在这里处理错误
}否则{
下一个()
}
}

您似乎在此处定义文件字段的预期名称:
upload.single('file')
?只要把“文件”的名字改成你想要的,我知道。正常使用时,我没有错误。我想抓住一个错误,以防万一。