我在JWT上使用的是以下内容:

let jwtoptions = {};
jwtoptions.jwtFromRequest = ExtractJWT.fromAuthHeaderAsBearerToken();
jwtoptions.secretOrKey = DB.secret;
let Strategy = new JWTStrategy(jwtoptions,(jwt_payload,done)=>{
  User.findById(jwt_payload.id)
  .then(User =>{
    return done(null, User);
  })
  .catch(err =>{
    return done(err,false);
  })
})
passport.use(Strategy);

但它向我展示了下面的错误:

(node:14224) UnhandledPromiseRejectionWarning: TypeError: done is not a function
(node:13568) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().

推荐答案

我没有使用Passport-JWT,但从阅读文档来看,您似乎需要使用回调而不是promise

let Strategy = new JWTStrategy(jwtoptions,(jwt_payload,done)=>{
  User.findById(jwt_payload.id, (err, user) => {
   if (err) return done(err, false);
   return done(null, user);
  });
});

Javascript相关问答推荐

判断表格单元格中是否存在文本框

如何为我的astro页面中的相同组件自动创建不同的内容?

如何在模块层面提供服务?

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

如何在输入元素中附加一个属性为checkbox?

我怎么才能得到Kotlin的密文?

material UI按钮组样式props 不反射

Use Location位置成员在HashRouter内为空

变量在导入到Vite中的另一个js文件时成为常量.

警告框不显示包含HTML输入字段的总和

处理TypeScrip Vue组件未初始化的react 对象

在SuperBase JS客户端中寻址JSON数据

Jexl to LowerCase()和Replace()

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色

需要刷新以查看Mern堆栈应用程序中的更改

AstroJS混合模式服务器终结点返回404

带元素数组的Mongo聚合

使用重新 Select 和对象理解 Select 器备忘

如何让noWrap在嵌套在Alert/AlertTitle组件中的排版组件中工作?

如何在Angular中分离桌面和移动页面并延迟加载每个页面?