具有中间件错误处理的 Express 路由器
Express router with middleware error handling
我对中间件的错误处理有疑问,特别是 multer。我有这条路线:
router.post('/', saveFile, (req, res, next) => {
//rest of code
})
然后我有 saveFile 中间件:
const multer = require('multer')
const storage = multer.diskStorage({
destination: (req, res, cb) => {
cb(null, './uploads/')
},
filename: (req, res, cb) => {
cb(null, new Date().getTime() + '.jpg')
}
})
const fileFilter = (req, file, cb) => {
if (file.mimetype === 'image/jpeg') cb(null, true)
cb(null, false)
}
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 3 // up to 3 megabytes
},
fileFilter: fileFilter
})
const saveFile = upload.single('file')
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 = function(error, req, res, next) {
if (error.name === 'MulterError') {
// handle error here
} else {
next()
}
}
我对中间件的错误处理有疑问,特别是 multer。我有这条路线:
router.post('/', saveFile, (req, res, next) => {
//rest of code
})
然后我有 saveFile 中间件:
const multer = require('multer')
const storage = multer.diskStorage({
destination: (req, res, cb) => {
cb(null, './uploads/')
},
filename: (req, res, cb) => {
cb(null, new Date().getTime() + '.jpg')
}
})
const fileFilter = (req, file, cb) => {
if (file.mimetype === 'image/jpeg') cb(null, true)
cb(null, false)
}
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 3 // up to 3 megabytes
},
fileFilter: fileFilter
})
const saveFile = upload.single('file')
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 = function(error, req, res, next) {
if (error.name === 'MulterError') {
// handle error here
} else {
next()
}
}