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

Uncaught (in promise) TypeError错误:无法读取undefined的slice属性

解决 "Cannot read properties of undefined (reading 'slice')" 错误及代码修复

错误原因分析

  • 报错行daily.slice(1, 6)触发错误,说明daily是undefined——要么传入的data对象里没有daily属性,要么data本身就是null/undefined。
  • 代码里还有一个拼写错误:hourly.slixe(1, 6)里的slixe是错的,应该是slice,这个也会导致后续执行报错。

修复方案

1. 给解构赋值加默认值,避免undefined

在解构data时,给daily和hourly设置默认空数组,同时先校验data是否有效:

2. 修正拼写错误

把slixe改成正确的slice

3. 调整hourly的temp字段(可选)

注意hourly数据的结构通常和daily不同,temp一般不是嵌套的day属性,而是直接的数值,需要根据实际API返回调整,避免后续读取temp.day出错。

修正后的完整代码

const formatForecastWeather = (data) => {
    // 校验data有效性,给daily、hourly设默认空数组
    const { timezone, daily = [], hourly = [] } = data || {};
    
    daily = daily.slice(1, 6).map(d => {
        return {
            title: formatToLocalTime(d.dt, timezone, 'ccc'),
            temp: d.temp.day,
            icon: d.weather[0].icon
        }
    });

    // 修正拼写错误,同时调整hourly的temp字段
    hourly = hourly.slice(1, 6).map(d => {
        return {
            title: formatToLocalTime(d.dt, timezone, 'hh:mm a'),
            temp: d.temp, // 根据实际API返回调整,若确实是day则改回d.temp.day
            icon: d.weather[0].icon
        }
    });

    return { timezone, daily, hourly };
};

额外建议

  • 调用函数前,确认data是API返回的有效响应,比如在Promise回调里先判断data存在再调用:
    fetch('your-api-url')
      .then(res => res.json())
      .then(data => {
        if (data) {
          const formattedData = formatForecastWeather(data);
          // 后续处理
        }
      })
    
  • 可以在控制台打印data,确认daily和hourly字段是否存在,是否和预期字段名一致(比如API可能返回days而非daily)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:35:26