axios 0.22.0版本调用axios.create抛出Uncaught TypeError如何解决
问题成因
axios 0.22.0属于官方迭代过程中的问题版本,其内部mergeConfig(配置合并)逻辑重构时遗漏了空值边界校验:函数执行时会直接对可能为undefined或null的配置字段调用Object.keys()方法,触发Cannot convert undefined or null to object类型错误。你传入的自定义配置和axios全局默认配置合并时就命中了这个逻辑漏洞,而0.21.4版本的mergeConfig逻辑自带空值兜底,所以不会报错。
解决方案
- 方案1:回退到无问题的0.21.4稳定版,执行安装命令即可:
npm install axios@0.21.4 # 若使用yarn则执行 yarn add axios@0.21.4 - 方案2:升级到0.22.0以上的修复版本,官方在后续小版本已经修复了该漏洞,可直接安装0.22分支的最新修复版:
npm install axios@0.22.1 - 临时兼容方案:若暂时无法升级/降级版本,可在调用
axios.create前手动给axios全局默认配置的空字段兜底,避免合并时出现空值:// 手动补全可能为空的配置字段为空对象 axios.defaults.headers = axios.defaults.headers || {} axios.defaults.proxy = axios.defaults.proxy || {} const service = axios.create({ baseURL: "host", timeout: 3000 })
内容的提问来源于stack exchange,提问作者santosh
相关产品推荐
相关产品推荐

