Estou tomando esse erro no console após realizar um método post no postman:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:576:11)
at ServerResponse.header (D:******\presentation-back-end\api\node_modules\express\lib\response.js:776:10)
at ServerResponse.send (D:******\presentation-back-end\api\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (D:******\presentation-back-end\api\node_modules\express\lib\response.js:267:15)
at file:///D:******/presentation-back-end/api/controllers/User.js:58:12
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
code: 'ERR_HTTP_HEADERS_SENT'
}
Ele não retorna app crashed, consigo usar o sistema normalmente, mas não faço ideia do que está causando o problema.
Método post:
router.post("/users", async (req, res) => {
const { isAdmin, email, username, name, password, confirmpassword } =
req.body;
if (!name) {
return res.status(422).json({ msg: "O nome é obrigatório!" });
}
if (!email) {
return res.status(422).json({ msg: "O email é obrigatório!" });
}
if (!password) {
return res.status(422).json({ msg: "A senha é obrigatória!" });
}
if (password != confirmpassword) {
return res
.status(422)
.json({ msg: "A senha e a confirmação precisam ser iguais!" });
}
//CHECKS IF THE USER ALREADY EXISTS
const userFound = await User.findOne(
{ email: email }
)
if (userFound) {
return res.status(400).json({ msg: "usuário já existe" });
}
// CREATE ENCRYPTED PASSWORD
const passwordHash = bcrypt.hashSync(password, 15);
const createuser = new User({
isAdmin,
email,
username,
name,
password: passwordHash,
});
try {
createuser
.save()
.then((user) => {
return res
.status(201)
.send({ data: user })
.json({ msg: "Usuário criado com sucesso !" });
})
.catch((err) => {
return console.log(err)
});
} catch (err) {
return res.status(500).send({
msg: "There was a problem adding the information to the database.",
err,
});
}
});
CheckToken:
const checkToken = (req, res, next) => {
const authHeader = req.headers["authorization"];
const token = authHeader && authHeader.split(" ")[1];
if (!token) return res.status(401).json({ msg: "Acesso negado!" });
try {
const secret = process.env.SECRET;
jwt.verify(token, secret);
next();
} catch (err) {
res.status(400).json({ msg: "O Token é inválido!" });
}
};