类型错误:expressJwt 不是函数

Posted

技术标签:

【中文标题】类型错误:expressJwt 不是函数【英文标题】:TypeError: expressJwt is not a function 【发布时间】: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)\

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

【问题讨论】:

【参考方案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');

【讨论】:

以上是关于类型错误:expressJwt 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

hive聚合函数

说说 Oracle 的 NVL 与 NVL2 函数

oracle 处理‘Null’函数

req.assert不是函数错误

数据库SQL的分组函数

我在用python数据到mysql的时候,有些列是float类型,但是导出的数据中有些是nan这种,在执行的时候报错