Electron+React+TS项目使用5paisajs报axiosCookieJarSupport不是函数错误
错误原因分析
- 5paisajs依赖的
axios-cookiejar-support包版本不匹配。旧版axios-cookiejar-support采用默认导出函数的结构,可直接调用;v4.0及以上版本改为导出命名方法wrapper,调用方式发生变更。如果5paisajs源码使用的是旧版调用逻辑,本地安装的是新版包,就会触发该错误。 - Electron项目的webpack构建规则导致commonjs模块导出转换异常。webpack默认配置如果开启了ES模块转换规则,会将commonjs的默认导出挂载到
.default属性下,5paisajs中直接调用axiosCookieJarSupport()时,实际拿到的是{ default: Function }对象,不是可执行函数,就会抛出类型错误。 - 手动编写存放在node_modules下的类型定义文件仅在编译阶段生效,和本次运行时报错无关,无需在类型定义方向排查。
排查方案
- 验证依赖版本:执行
npm ls axios-cookiejar-support确认当前安装的版本,如果是4.x及以上版本,强制安装3.x兼容版本:
npm i axios-cookiejar-support@3.0.0 -S
安装完成后重启应用验证错误是否消失。
2. 调整webpack构建配置:在webpack配置中新增externals规则,将5paisajs和axios-cookiejar-support标记为外部依赖,不走webpack打包逻辑,由Electron直接加载原生node模块。
3. 验证导出转换问题:直接修改node_modules/5paisajs/index.js第21行的调用代码,将axiosCookieJarSupport()改为axiosCookieJarSupport.default?.(),如果修改后应用正常运行,即可确认是ES模块转换导致的问题,后续可使用patch-package工具对5paisajs包生成永久补丁,避免每次重装依赖都要手动修改。
内容的提问来源于stack exchange,提问作者rsp
相关产品推荐
相关产品推荐

