求助:使用jwt-decode解码Token时触发TypeError异常
解决jwt-decode报错
TypeError: jwt_decode_1.default is not a function 这个错误我之前帮好几个开发者排查过,大概率是jwt-decode的导入方式和版本不匹配导致的,我给你几个针对性的解决方案:
1. 适配新版本jwt-decode(v3+)的正确导入方式
从jwt-decode v3开始,它改用了ES模块的命名导出,不再支持默认导出。如果你安装的是v3及以上版本,需要修改你的导入代码:
错误的导入方式(会触发这个报错):
import jwt_decode from 'jwt-decode';
正确的导入+使用方式:
import { jwtDecode } from 'jwt-decode'; // 在你的RoleGuardService.canActivate里这样用 const decodedToken = jwtDecode(yourToken);
2. 如果你坚持使用旧版本(v2及以下)
如果你的项目依赖的是jwt-decode v2或更早版本,默认导出是有效的,但如果你的项目开启了严格的ES模块解析,可能需要调整导入方式:
import * as jwt_decode from 'jwt-decode'; // 使用default属性调用 const decodedToken = jwt_decode.default(yourToken);
不过更推荐你升级到最新版本的jwt-decode,因为旧版本可能存在安全或兼容性问题。
3. 确认你的jwt-decode版本
可以打开项目根目录的package.json,找到jwt-decode的版本号,对应上面的导入方式调整:
- 版本号以
3.x.x或更高开头:用命名导入{ jwtDecode } - 版本号以
2.x.x或更低开头:用默认导入或者带default属性的命名空间导入
内容的提问来源于stack exchange,提问作者tilly
相关产品推荐
相关产品推荐

