You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

express配置JWT鉴权出现TypeError:expressJwt not a function报错

expressJwt not a function 报错原因与修复

问题复现

Express项目接入JWT身份认证能力时,运行抛出TypeError: "expressJwt not a function"错误,原实现代码:

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

function authJwt(){
    secret = process.env.secret;
    return expressJwt({
      secret,
      algorithms: ["HS256"],    
    });
}
module.exports = authJwt;

报错原因

express-jwt v7.0.0及以上版本做了不兼容的API变更:

  • 旧版本(v6.x及更早)将JWT中间件函数作为模块默认导出,可直接通过require('express-jwt')获取函数调用
  • 新版本改为命名导出,直接require拿到的是模块整体对象,不是可执行函数;同时导出的中间件方法名改为小驼峰格式的expressjwt(首字母小写),原大驼峰命名的方法已不存在,因此调用时抛出类型错误。

修复方案

二选一即可:

方案1:适配新版本API(推荐)

调整导入方式,解构获取命名导出的方法,同时修正方法名大小写:

// 解构获取命名导出的expressjwt方法(注意首字母小写)
const { expressjwt } = require('express-jwt'); 

function authJwt(){
    // 补充变量声明,避免secret泄漏到全局作用域
    const secret = process.env.secret;
    return expressjwt({
      secret,
      algorithms: ["HS256"],    
    });
}
module.exports = authJwt;

额外提示:原代码中secret变量未加声明关键字,会污染全局作用域,修复时建议补充const声明。

方案2:降级到兼容旧写法的版本

如果不想调整现有代码,可将express-jwt降级到v6稳定版,执行以下安装命令:

npm install express-jwt@6.1.1

降级完成后原有代码无需修改即可正常运行。


内容的提问来源于stack exchange,提问作者Veasna Koeun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 07:09:16