为何出现TypeError: expressJwt is not a function错误?该如何修复?
解决express-jwt的TypeError: expressJwt is not a function错误
问题代码(jwt.js)
const expressJwt = require('express-jwt') function authJwt() { const secret = process.env.secret return expressJwt({ secret, algorithms: ['HS256'] }) } module.exports = authJwt
终端报错信息
C:\code-wldn\final-project\wldn-api\helpers\jwt.js:5 return expressJwt({ ^ TypeError: expressJwt is not a function at authJwt (C:\code-wldn\final-project\wldn-api\helpers\jwt.js:5:12) at Object.<anonymous> (C:\code-wldn\final-project\wldn-api\app.js:18:9)
已尝试操作
- 确认jwt.js文件中正确导入express-jwt并作为函数使用,预期错误修复、应用正常运行,但问题仍未解决
解决方案
这个错误是因为express-jwt v4及以上版本改变了导出方式,默认导出不再是直接可用的函数,需要调整导入方式:
方案1:解构导入正确的方法名
修改jwt.js的导入语句为:
const { expressjwt: expressJwt } = require('express-jwt')
注意这里是小写的expressjwt,新版本将核心方法以该名称导出,我们通过重命名保持原有代码的变量名不变。
方案2:获取default导出
如果习惯原有导入写法,也可以直接取default导出:
const expressJwt = require('express-jwt').default
修改后重新运行项目,即可解决该类型错误。
内容的提问来源于stack exchange,提问作者Wildan Muhammad
相关产品推荐
相关产品推荐

