首页 > 解决方案 > 类型错误:expressJwt 不是函数

问题描述

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

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)\

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

标签: javanode.jsexpressjwtexpress-jwt

解决方案


带大括号

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

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

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

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

推荐阅读