类型错误:expressJwt 不是函数

use*_*446 7 java node.js express jwt express-jwt

我正在尝试在我的应用程序中编写用于用户授权的中间件。我用这个函数来检查某个路由是否需要登录。代码如下:

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

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

但是,我收到以下错误:

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

可能是什么问题呢?其他答案似乎都没有帮助。

Ala*_*ine 13

2023 年更新

对于大于 7.x 的版本,请按照文档所述使用它(https://www.npmjs.com/package/express-jwt):

const { expressjwt: jwt } = require("express-jwt");
Run Code Online (Sandbox Code Playgroud)

然后你可以使用jwt

jwt({
  secret: "shhhhhhared-secret",
  audience: "http://myapi/protected",
  issuer: "http://issuer",
  algorithms: ["HS256"],
});
Run Code Online (Sandbox Code Playgroud)


juz*_*aai 5

使用大括号

const { expressJwt } = require('express-jwt');
      ^            ^
Run Code Online (Sandbox Code Playgroud)

您正在尝试进行对象解构expressJwt,它会查找模块导出的对象中命名的字段express-jwt。但根据错误消息,对象没有这样的字段。

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

const expressJwt = require('express-jwt');
Run Code Online (Sandbox Code Playgroud)