TypeError: expressJWT is not a function

一、问题描述

注册 JWT 字符串解析还原成 JSON 对象的中间件 express-jwt,最后跑程序时报错:TypeError: expressJWT is not a function
 

 

二、报错原因

express-jwt 包的版本过高,在高版本中使用了低版本的语法

 

三、问题解决方法

1、第一种方法就是将当前使用的 express-jwt 包的版本降低

参考方法:将 pakage.json 中的 express-jwt 版本改为 6.1.1,再在终端执行 npm i 就可以了。

 

2、第二种方法就是使用当前 express-jwt 包版本的最新语法

//导入 express-jwt 包

const { expressJWT:expressJWT } = require("express-jwt")
//全局注册
//.unless({用正则指定不需要访问权限的路径}) 

app.use(expressJWT({ secret: 'shhhhhhared-secret', algorithms: ['HS256'] }).unless({ path:[/^\/api\//] }))

 

更详细的最新语法请查询官方文档可知:https://www.npmjs.com/package/express-jwt 

 

三、获取用户数据

token 解析成功后,就会将 token 中包含的用户数据自动挂载到 req.auth 上 (注意:这里有的用的是 user,如果用 user 不成功的就用 auth)

// 这是一个有权限的 API 接口
app.get('/admin/getinfo', function (req, res) {
  // TODO_05:使用 req.auth 获取用户信息,并使用 data 属性将用户信息发送给客户端
  console.log(req.auth);
  res.send({
    status: 200,
    message: '获取用户信息成功!',
    data: req.auth// 要发送给客户端的用户信息
  })
})
 
posted @ 2022-07-26 11:26  CodeFan*  阅读(1954)  评论(0编辑  收藏  举报