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

React从16.13.1升级到18.2.0后Axios1.3.4迭代器错误如何修复?

解决React升级后Axios 1.3.4版本出现的“Cannot read properties of undefined (reading '@@__symbol:iterator')”错误

以下是针对该问题的几种排查和修复方案:

  • 检查拦截器中的数据遍历逻辑
    Axios从0.x升级到1.x后,响应/请求拦截器的处理逻辑有细节变化。如果你的拦截器中直接对response.data或某个可能为undefined的对象做遍历操作(比如for...of循环),就会触发这个迭代器未找到的错误。
    修复时先判断目标数据是否存在且可遍历:

    // 风险写法:未判断response.data是否存在
    axios.interceptors.response.use(res => {
      for (const item of res.data) {
        // 处理逻辑
      }
      return res;
    });
    
    // 修复写法
    axios.interceptors.response.use(res => {
      // 先确认数据存在且具备迭代器
      if (res.data && typeof res.data[Symbol.iterator] === 'function') {
        for (const item of res.data) {
          // 处理逻辑
        }
      }
      return res;
    });
    
  • 替换过时的Axios API
    Axios 1.x正式废弃了axios.all和axios.spread方法,改用原生Promise.all即可解决潜在的兼容问题:

    // 旧写法
    axios.all([axios.get('/api/1'), axios.get('/api/2')])
      .then(axios.spread((res1, res2) => {
        // 处理结果
      }));
    
    // 新写法
    Promise.all([axios.get('/api/1'), axios.get('/api/2')])
      .then(([res1, res2]) => {
        // 处理结果
      });
    
  • 补充ES6+特性的Polyfill
    React 18和Axios 1.x对运行环境的ES特性要求更高,如果你的项目未配置完整的polyfill,低版本浏览器可能缺失Symbol.iterator这类特性。可以安装并引入core-js补充:

    1. 安装依赖:
      npm install core-js@3 --save
      
    2. 在项目入口文件(如src/index.js)顶部添加:
      import 'core-js/es/symbol/iterator';
      
  • 逐步升级Axios版本排查冲突
    如果上述方案无效,可先尝试升级到Axios 1.2.x版本,验证是否仍出现错误,逐步缩小问题范围。同时检查项目中是否有依赖Axios的第三方库(如请求封装工具)未适配Axios 1.x版本,这类情况也可能导致兼容性报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:10:16