使用express-jwt作为Express中间件时遇TypeError问题求助
解决
TypeError: expressJwt is not a function错误 这个错误的核心原因是express-jwt v7及以上版本调整了导出方式,用CommonJS的require()直接导入时,拿到的不是预期的函数,得做适配处理。
修复方案1:调整导入语句
方式A:取默认导出
把原来的导入代码改成:
const expressJwt = require('express-jwt').default;
之后原有的中间件调用逻辑完全不用改,直接正常使用即可。
方式B:解构重命名
包本身导出的函数名为全小写的expressjwt,可以解构后重命名成你习惯的写法:
const { expressjwt: expressJwt } = require('express-jwt');
这种方式下,中间件的调用代码和你原来的写法保持一致。
修复方案2:降级到兼容版本
如果不想改动代码,也可以卸载当前版本,安装v6.x的稳定版:
npm uninstall express-jwt npm install express-jwt@6.1.0
降级后,你原来的导入和调用逻辑就能正常运行。
额外注意事项
- 确保
SECRET变量已定义,比如:
const SECRET = 'your-actual-secret-key'; // 替换成你自己的密钥
/login接口依赖JSON请求体解析,要在所有路由和中间件前添加:
app.use(express.json());
否则req.body会是undefined,导致登录逻辑无法正常执行。
内容的提问来源于stack exchange,提问作者Lester_27
相关产品推荐
相关产品推荐

