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

JS/Next.js报错TypeError: arr.map is not a function问题排查

报错原因

TypeError: arr.map is not a function 只有一种触发可能:调用.map()的arr不是数组类型。
对照你贴的接口返回结构就能直接定位问题:你代码中取到的footerData[0].attributes.items是单个对象,不是你代码预期的数组结构,自然无法调用数组原型上的map方法。
之前代码能正常运行,是因为旧接口的items字段返回数组格式,现在接口返回结构做了调整,才会出现原本正常的代码突然失效的情况,和JS、Next.js本身的运行逻辑无关。

修复方案

根据实际业务预期选对应改法即可:

  • 如果业务上items固定只返回单个导航项,直接去掉map逻辑处理数据即可:
export const footerAdapter = (footerData) => {
  const item = footerData[0].attributes['items']
  // 如果最终需要返回数组格式,把处理后的单个对象包进数组即可
  return [{
    link: item.link,
    title: item.title
  }];
};
  • 如果接口存在返回单个对象、返回数组两种可能(比如单条/多条数据复用同一接口),加一层类型判断做兼容,统一转成数组后再调用map:
export const footerAdapter = (footerData) => {
  const items = footerData[0].attributes['items']
  // 非数组场景下手动包裹为数组,兼容两种返回结构
  const arr = Array.isArray(items) ? items : [items]
  return arr.map((md) => {
    return {
      link: md.link,
      title: md.title
    };
  });
};

提示:这类前后端字段结构不匹配的问题,可以在数据处理前加一层类型校验,避免接口结构变动直接导致页面崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:57:33