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

使用next-sitemap生成动态站点地图时遇TypeError: fields.map is not a function

解决"field.map is not a function"错误

这个错误的核心原因是getServerSideSitemap接收到的字段数据不符合预期格式,或者生成的fields不是有效数组。以下是具体排查和修复步骤:

1. 确认fields是有效数组

先查看console.log({ fields })的输出,确保fields是一个数组(哪怕是空数组)。如果不是数组,按以下方向排查:

  • 验证BaseNCategories:确认从../../lib/generalConstants导入的BaseNCategories是数组类型,而非undefined或对象。
  • 检查API返回:确认http://baseapi/v3/category-list返回的categoriesData.cat是数组(比如API响应结构应为{ cat: [...] },而非{ cat: {} }或null)。
  • 确认categoryBn:BaseNCategories.filter()返回的必然是数组,除非BaseNCategories本身不是数组,这时候会先触发filter相关错误,可通过日志排查。

2. 修正getServerSideSitemap调用格式

如果使用的是next-sitemap v3及以上版本,getServerSideSitemap的第二个参数需要是包含fields属性的配置对象,而非直接传入数组。修改代码如下:

// 原代码
// return getServerSideSitemap(ctx, fields);

// 修改后
return getServerSideSitemap(ctx, {
  fields: fields,
});

如果直接传数组,函数内部会将其当作配置对象处理,尝试对某个非数组属性调用map,从而触发"field.map is not a function"错误。

3. 额外优化:修正loc字段格式

站点地图的loc需要是完整的URL(包含协议、域名),否则生成的站点地图会被搜索引擎判定为无效。建议修改loc的生成逻辑:

loc: `https://your-domain.com/${makeSlugFromString(category.Slag)}`,

替换your-domain.com为你的实际域名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:42:46