为何出现express_jwt__WEBPACK_IMPORTED_MODULE_2___default(...)不是函数的错误?
问题分析与解决方案
这个错误的核心原因是你使用的express-jwt版本和代码中的导入、调用方式不兼容。
从v7版本开始,express-jwt的导出结构和命名规则发生了变化:
- 原有的默认导出函数被移除,改为导出包含
expressjwt(小写j)方法的对象 - 不再支持
import expressJwt from 'express-jwt'这种默认导入后直接调用的方式
解决方案一:适配新版本express-jwt(推荐)
修改auth.controller.js中的导入和调用代码:
- 替换导入语句:
// 替换原来的导入 import { expressjwt } from 'express-jwt'
- 修改
requireSignin的定义:
const requireSignin = expressjwt({ secret: config.jwtSecret, userProperty: 'auth' })
注意这里是小写的expressjwt,和导入的名称保持一致。
解决方案二:降级到兼容的旧版本
如果你不想修改代码,可以将express-jwt降级到v6.x版本(比如v6.1.0),执行以下命令:
npm install express-jwt@6.1.0
降级后,你原来的导入和调用代码就能正常工作了。
为什么你之前尝试的import { expressJwt } from 'express-jwt'无效?
因为v7+版本的express-jwt中,导出的方法名称是小写的expressjwt,而不是大写J的expressJwt,所以你导入的名称和实际导出的方法不匹配,导致调用时仍然报错。
内容的提问来源于stack exchange,提问作者Mihailo
相关产品推荐
相关产品推荐

