我创建了中间件来验证body中的字段,如下所示:
前端路线:
router.post('/s-i', async (req, res) => {
try {
const { data } = await api.post('/sign-in', req.body)
res.cookie("_rt", data._rt, { httpOnly: true, secure: false })
delete data._rt
return res.json(data)
} catch (e) {
// Here is error
return res.status(e.response.status).json(e.response.data)
}
});
router.post('/sign-in', v(['email', 'password', 'twoFa', 'phone']), wrapAsync(userController.signIn));
中间件:
exports.v = fields => {
return (req, res, next) => {
fields.forEach(field => {
if (req.body[field]) {
const result = require(`./validators/${field}`)(req.body[field])
if (!result)
return res.status(400).json({ message: 'bad-request', status: 400 })
}
})
next()
}
}
在注释放置的地方,我可以看到这个错误,实际上,所有的工作都可以找到,如果正文前面有错误的字段,将收到400个状态代码,但在后端终端,我仍然有这个错误,无法找到原因。
问题是我一直在弄这个
ERR_HTTP_HEADERS_SENT
res.send({})
两次,但我真的不明白这个问题的原因。