javascript - 使用 throw 错误时,passport.authenticate() 中出现未处理的承诺拒绝错误
问题描述
我正在尝试将发生的身份验证错误作为 Node.js/Express JSON 响应 API 发送出去。
我的代码:
console.log("LOGIN USER...");
try {
let errors = validationResult(req);
if (!errors.isEmpty()) throw { code: 400, message: errors }
let authopt = { usernameField: 'email', passwordField: 'password' };
passport.authenticate('local', authopt, (err, user, info) => {
if (err || !user) {
console.log("ERROR IS PASSING FROM HERE.");
throw { code: 500, message: err }
}
else {
const token = user.generateJWT();
return res.status(200).json({
"jwtToken": token,
});
}
})(req, res, next)
} catch (error) {
return res.status(error.code || 500).send(error.message || "Unknown internal server error ! .");
}
端点调用后,消息“错误从这里传递。” 在我的控制台中显示错误:
(节点:9392)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。(拒绝 id:1)(节点:9392)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
我正在通过保持相同的代码结构来寻找解决方案。有什么帮助吗?
解决方案
推荐阅读
- reactjs - Outlook 中 html 电子邮件中的动态图像高度和宽度
- apache-spark - PySpark:如何在 For 循环中附加数据帧
- c# - 如何更新子类中的计算值
- mongodb - GraphQL 类型“对象”?
- r - 根据对象名称在列表内创建新列表
- html - 外部 SVG 中的样式表 - 它们是从缓存中加载还是从两次加载?
- javascript - React 中的 Axios 异步等待
- python - 如何使通过python中的上下文管理器释放的资源无效?
- python - 用空值填充数据框中缺少的日期小时
- sql - 检查两列并删除名为 contentid 的列的最小编号