未处理的承诺拒绝警告错误



错误

(节点:39756)未处理的PromiseRetentionWarning:Error[ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头位于ServerResponse.setHeader(_http_outgoing.js:561:11)在ServerResponse.header(C:\Users\elegem\OneDrive\Рабочийсал\animflex\api\node_modules\express\lib\response.js:771:10)在ServerResponse.send(C:\Users\elegem\OneDrive \Рабочийсал\animflex\api\node_modules\express\lib\response.js:170:12)在ServerResponse.json(C:\Users\elegem\OneDrive\Рабочийсал\animflex\api\node_modules\express\lib\response.js:267:15)网址:C:\Users\elegem\OneDrive \Рабочий在processTicksAndRejections(internal/process/task_queues.js:95:5)

(使用node --trace-warnings ...显示创建警告的位置)(节点:39756)未处理的PromiseRejection警告:未处理的promise rejection。此错误源于在没有catch块的异步函数内部抛出,或拒绝未使用.catch()处理的promise。要在未处理的prompt拒绝时终止节点进程,请使用CLI标志--unhandled-rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝id:1)(节点:39756)[DEP0018]不推荐使用警告:不推荐使用未经处理的承诺拒绝。将来,未处理的promise拒绝将使用非零退出代码终止Node.js进程。

这是我的代码

router.post("/login", async (req, res) => {
try {
const user = await User.findOne({ email: req.body.email });
if (!user) {
res.status(401).json("Something went wrong!");
}
const bytes = CryptoJS.AES.decrypt(user.password,
process.env.SECRET_KEY);
const originalPassword = bytes.toString(CryptoJS.enc.Utf8);
if (originalPassword !== req.body.password) {
res.status(401).json("Something went wrong!");
}
res.status(200).json(user);
} catch (err) {
res.status(500).json(err)
}
});
module.exports = router;```

原因

错误[ERR_HTTP_HEADERS_SENT]是一个有趣的错误,当服务器尝试向客户端发送多个响应时会引发该错误。

解决方案

router.post("/login", async (req, res) => {
try {
const user = await User.findOne({ email: req.body.email });
if(!user){
res.status(401).json("Something went wrong!");
} 
const bytes = CryptoJS.AES.decrypt(user.password, 
process.env.SECRET_KEY);
const originalPassword = bytes.toString(CryptoJS.enc.Utf8);
if(originalPassword !== req.body.password) {  
res.status(401).json("Something went wrong!"); 
}
res.status(200).json(user);
} catch (err) {
res.status(500).json(err)
}
});
module.exports = router;

这是处理JS中条件的正确方法,在这里你可以阅读更多关于错误的信息

最新更新