【问题标题】:TypeError: expressJwt is not a function类型错误:expressJwt 不是函数
【发布时间】:2020-12-19 01:09:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: java node.js express jwt express-jwt


    【解决方案1】:

    带大括号

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

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

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

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

    【讨论】:

    • 它似乎解决了这个错误,但我得到了另一个更详细的错误:错误:Route.get() 需要一个回调函数但得到了一个 [object Undefined]
    • 如果我的帖子回答了您最初的问题,请接受。您评论中的错误是另一种情况,上面的示例代码中不存在Route.get(),因此请将其作为新问题发布。 :)
    【解决方案2】:

    参考readme

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

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

    【讨论】:

      猜你喜欢
      • 2016-02-26
      • 2013-04-01
      • 2016-03-06
      • 2018-04-28
      • 2019-02-14
      • 2021-10-02
      • 2021-10-30
      • 2018-11-22
      相关资源
      最近更新 更多