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

Node.js使用axios请求HTTP接口时Response属性undefined问题排查

问题解决方案

核心错误原因

  • for...in 遍历数组时,循环变量i返回的是数组的下标值,而非数组的元素对象,直接访问i.roster必然返回undefined。
  • 不推荐使用for...in遍历数组,该语法原本设计用于遍历普通对象的键,遍历数组时会额外遍历原型链上的可枚举属性,容易触发预期外的问题。

修正后代码

简洁写法(推荐)

直接使用数组的map方法提取字段,逻辑更清晰:

// Node.js 用CommonJS规范的话将import改为 const axios = require('axios')
import axios from 'axios'

const urlBase = 'https://fantasy.espn.com/apis/v3/games/ffl/seasons/2021/segments/0/leagues/72628823?view=mMatchup&view=mMatchupScore&scoringPeriodId='
const week = 1 // 替换为实际的周数参数
const url = urlBase.concat(week)

axios.get(url)
  .then(res => {
      const allTeams = res.data.teams
      // 先判断返回值是否为数组,避免报错
      if (!Array.isArray(allTeams)) return console.log('返回的teams字段不是数组')
      const pogBoys = allTeams.map(team => team.roster)
      console.log(pogBoys)
      // 后续处理pogBoys的逻辑写在这里
   })
  .catch(err => console.error('请求异常:', err))

保留原循环逻辑的修正版

如果要保留你原有函数写法,修改循环逻辑即可:

axios.get(url).then((res)=> {
   let allRosters = res.data.teams;
   let rosters = (allRosters) => {
       let pogBoys = [];
       // 改用for...of直接遍历数组元素
       for(let team of allRosters){
           pogBoys.push(team.roster);
           console.log(team.roster);
       }
       return pogBoys;
   };
   const pogBoys = rosters(allRosters);
});

大体积JSON响应优化建议

如果返回的JSON体量特别大,不需要等待整个响应加载完成再处理,可以使用流式JSON解析库按需提取teams下的roster字段,降低内存占用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:12:02