【问题标题】:"TypeError: Cannot read property 'forEach' of undefined" after fetch“TypeError:无法读取未定义的属性'forEach'”
【发布时间】:2020-08-21 21:48:02
【问题描述】:

包含 catch 块后出现此错误。

TypeError:无法读取未定义的属性“forEach”。

    const fetch = require("node-fetch");
    function update(){
      fetch("http://api.coronatracker.com/v3/analytics/dailyNewStats?limit=200").then(response=>response.json()).then(rsp=>{
          console.log(rsp.data)
          rsp.data.forEach(element=>{
            lat=element.lat;
            lon=element.lng;
            cases=element.daily_cases;
            if(cases>255){
              color="rgb(255,0,0)";
            }
            else{
              color="rgb(${cases},0,0)";
            }
            new mapboxgl.Marker({
              draggable:false,
              color:color
            }).setLngLat([lon,lat]).addTo(map);
          });
        }).catch(err => console.log(err));
    }

【问题讨论】:

  • console.log(rsp) 显示在哪里?
  • 这意味着你没有循环数组,forEach 是一个数组方法

标签: javascript node.js fetch


【解决方案1】:

response.json() 返回没有任何包装器的对象。所以它存在于rsp 而不是rsp.data。 所以只需删除.data

const fetch = require("node-fetch");
function update() {
  fetch("http://api.coronatracker.com/v3/analytics/dailyNewStats?limit=200")
    .then((response) => response.json())
    .then((rsp) => {
      rsp.forEach((element) => {
        lat = element.lat;
        lon = element.lng;
        cases = element.daily_cases;
        if (cases > 255) {
          color = "rgb(255,0,0)";
        } else {
          color = "rgb(${cases},0,0)";
        }
      });
    })
    .catch((err) => console.log(err));
}

update()

【讨论】:

  • 拜托,只是告诉某人做某事是不够的。请解释为什么会这样。
猜你喜欢
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 2021-10-29
相关资源
最近更新 更多