TypeError: expressJwt is not a function

TypeError: expressJwt is not a function

我正在尝试在我的应用程序中编写用于用户授权的中间件。我使用此功能来检查路线是否需要登录。 代码如下:

const { expressJwt } = require('express-jwt'); 

exports.requireSignin = expressJwt({
secret: process.env.JWT_SECRET,
algorithms: ["HS256"],
userProperty: "auth",});

但是,我收到以下错误:

TypeError: expressJwt is not a function at Object.<anonymous> (path to the file)\

可能是什么问题? None 的其他答案似乎有帮助。

加上大括号

const { expressJwt } = require('express-jwt');
      ^            ^

您正在尝试执行 对象解构,它在 express-jwt 模块导出的对象中查找名为 expressJwt 的字段。但是根据报错提示object没有such field.

根据 express-jwt's documentation,您不需要解构,只需将导出的对象分配给一个变量,因此请尝试以下形式(不带大括号):

const expressJwt = require('express-jwt');

参考 readme.

如果我没记错的话正确的函数名为jwt

//const { expressJwt } = require('express-jwt');

//use this 
var jwt = require('express-jwt');

我尝试了在多个编程论坛上找到的所有可能的解决方案,但没有任何效果,所以我只是将我的 express-jwt 版本降级到 5.3.1 并且它开始完美运行,所以这意味着错误在新更新,只需使用 npm uninstall express-jwt 卸载当前版本并重新安装 npm I express-jwt@5.3.1,它会有所帮助。

如果版本大于 7.x,请按照文档所述使用它:

const { expressjwt: jwt } = require("express-jwt");