Я создаю загрузку файла с помощью nodejs & multer, и моя проблема заключается в том, что после истечения срока действия веб-токена json внутри cookie-файла (если он не просрочен, он работает хорошо), и я выполняю почтовый запрос, ERR_CONNECTION_RESET (в редких случаях первый ERR_CONNECTION_ABORTED происходит до ERR_CONNECTION_RESET) происходит. Я уверен, что проблема заключается в мультер, потому что, как я исследовал, я понял, что эта ошибка касается файлов cookie, и это правильно, потому что, как обычно, когда я выполняю почтовый запрос после истечения срока действия jwt (и в этом случае, в соответствии с моим промежуточным ПО, файл cookie должен быть тоже удалено) cookie не удаляется.
Я попробовал это: установить одну и ту же дату окончания срока действия для моего jwt и cookie, где хранится jwt; обработка ошибок. но ни один из них не работал
вот мой код промежуточного программного обеспечения
const guard = (req, res, next) =>{
const token = req.body.token ||
req.query.token ||
req.headers['x-access-token'] ||
req.cookies.token;
if(!token){
return res.status(401).send({redirect: true, location: '/sign-in'})
}
else{
jwt.verify(token, process.env.SECRET, function (err,decoded){
if(err){
if(err.message === 'jwt expired'){
res.clearCookie('token')
return res.status(401).send({redirect: true, location: '/sign-in'})
}
console.log(err.message)
return res.status(500).send({
message: err.message
})
}
req.userId = decoded.id;
next()
})
}
}
и код и код Multer для маршрута, который обрабатывает пост (не только) запрос
const storage = multer.diskStorage({
destination: (req, file, callback) => {
const userPath = path.join(imgStoragePath, req.userId);
fs.mkdir(
userPath,
() => callback(null, userPath)
)
},
filename: (req, file, callback) => {
const filenameParts = file.originalname.split('.');
const ext = filenameParts.pop();
const basename = filenameParts.join('.');
const additionalPath = Date.now() + '' + uuid() + '' +
Math.floor(Math.random() * (2000 - 500)) + 500;
callback(null, basename + '-' + additionalPath + '.' + ext);
},
})
const upload = multer({
storage,
limits: '1mb',
}).array('image')
router.post('/', upload, async (req, res) => {
try {
const {
//variables
} = req.body
console.log('file ' + req.files.length + /* logging other variables */)
return res.status(200).send({name})
} catch (error) {
return res.status(500).send({
message: error.message
})
}
})
так как я сказал, когда jwt истекает, ожидаемый ответ должен быть 401 HTTP-кодом и перенаправлением на маршрут входа, но вместо этого я получаю ERR_CONNECTION_RESET
что я должен сделать, чтобы получить этот результат. спасибо!