英文:
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 不是一个函数,在 Object.<anonymous> (文件路径)
可能是什么问题?其他答案似乎都没有帮助。
英文:
I'm trying to write middleware for user authorization in my app. I use this function to check if a route requires being sign in.
The code is as follows:
const { expressJwt } = require('express-jwt');
exports.requireSignin = expressJwt({
secret: process.env.JWT_SECRET,
algorithms: ["HS256"],
userProperty: "auth",});
However, I get the following error:
TypeError: expressJwt is not a function at Object.<anonymous> (path to the file)\
What could be the problem? None of the other answers seem to be helpful.
答案1
得分: 10
2023更新
如果版本大于7.x,请按照文档所示使用(https://www.npmjs.com/package/express-jwt):
const { expressjwt: jwt } = require("express-jwt");
然后你可以使用 jwt
:
jwt({
secret: "shhhhhhared-secret",
audience: "http://myapi/protected",
issuer: "http://issuer",
algorithms: ["HS256"],
});
英文:
2023 UPDATE
With version greater than 7.x, use this as doc said (https://www.npmjs.com/package/express-jwt) :
const { expressjwt: jwt } = require("express-jwt");
Then you can use jwt
:
jwt({
secret: "shhhhhhared-secret",
audience: "http://myapi/protected",
issuer: "http://issuer",
algorithms: ["HS256"],
});
答案2
得分: 5
使用花括号
const { expressJwt } = require('express-jwt');
^ ^
你正在尝试进行对象解构,它会在由express-jwt
模块导出的对象中查找名为expressJwt
的字段。但根据错误消息,该对象没有这样的字段。
根据express-jwt
的文档,你不需要解构,只需将导出的对象赋值给一个变量,因此请尝试以下形式(不使用花括号):
const expressJwt = require('express-jwt');
英文:
With the curly brackets
const { expressJwt } = require('express-jwt');
^ ^
you are trying to do object destructuring, which looks for a field named expressJwt
in the object exported by express-jwt
module. But according to the error message that object doesn't have such field.
As per express-jwt
's documentation, you don't need destructuring but to simply assign the exported object into a variable, so try the following form (without curly brackets):
const expressJwt = require('express-jwt');
答案3
得分: 4
这对我来说没有由低版本引起的高严重性漏洞问题:
npm uninstall express-jwt
npm install express-jwt@6.1.0
英文:
this work for me without high severity vulnerability caused by low version:
npm uninstall express-jwt
npm install express-jwt@6.1.0
答案4
得分: 1
const { expressjwt: expressjwt } = require('express-jwt');
**OR**
const { expressjwt } = require('express-jwt');
尝试将首字母小写,这对我有效。
英文:
const { expressjwt: expressjwt } = require('express-jwt');
OR
const { expressjwt } = require('express-jwt');
Try lowercase this worked for me..
答案5
得分: 0
参考 readme。
如果我没记错的话,正确的函数名是 jwt
//const { expressJwt } = require('express-jwt');
//使用这个
var jwt = require('express-jwt');
英文:
Reference to the readme.
If I am not mistaken the right function is named jwt
//const { expressJwt } = require('express-jwt');
//use this
var jwt = require('express-jwt');
答案6
得分: 0
我在多个编程论坛上尝试了所有可能的解决方案,但都没有奏效,所以我只是将 express-jwt
版本降级为 5.3.1
,然后它就开始完美地工作了,这意味着错误出在新的更新中,只需使用 npm uninstall express-jwt
卸载当前版本,然后再次安装 npm I express-jwt@5.3.1
,它会有所帮助。
英文:
I tried all the possible solution found on multiple programming forums, but nothing worked, so I just downgrade my express-jwt
version to 5.3.1
and it start working perfectly, so it means error is in new update, just uninstall current version with npm uninstall express-jwt
and install again npm I express-jwt@5.3.1
, it will help.
答案7
得分: 0
按照文档操作对我有效:
var { expressjwt: jwt } = require("express-jwt");
var jwtCheck = jwt({
secret: jwks.expressJwtSecret({
cache: true,
...更多内容
})
英文:
Following the documentation worked for me:
var { expressjwt: jwt } = require("express-jwt");
var jwtCheck = jwt({
secret: jwks.expressJwtSecret({
cache: true,
...more stuff
})
答案8
得分: 0
如果您在expressJwt
对象中没有算法,就在密钥旁边添加它,用逗号分隔,使用像RS256这样的加密算法。这种情况也发生在我身上。
英文:
If you don't have an algorithm in the expressJwt object, add it next to the secret, separated by ,
and use cypher such as RS256. It happened to me.
答案9
得分: 0
const { expressjwt: ejwt } = require("express-jwt");
This worked for me, it should be `expressjwt` not `expressJwt` as documentation state.
英文:
const { expressjwt: ejwt } = require("express-jwt");
This worked for me, it should be expressjwt
not expressJwt
as documentation state.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论