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

Eleventy自定义集合过滤时触发length读取未定义错误

问题排查与修复

你的代码报错核心原因是**forEach方法没有返回值**,它的执行结果是undefined,但Eleventy要求自定义集合必须返回一个数组(或可迭代集合),所以程序尝试读取undefined的length属性时抛出了错误。

把forEach换成filter就能解决问题,filter会自动筛选符合条件的元素并返回新数组:

eleventyConfig.addCollection("feed", function(collectionApi) {
    return collectionApi.getAll().filter(item => {
        return item.data.notetype === "feed";
    });
});

补充说明

  • 用filter替代forEach是因为forEach仅遍历执行回调,不会生成新数组;而filter专门用于筛选数组元素,返回符合条件的新数组,完全匹配Eleventy自定义集合的要求。
  • 后续给这个集合做分页的话,可在模板前置元数据中配置:
---
pagination:
    data: collections.feed
    size: 10 # 自定义每页显示条数
    alias: feedPosts
---

之后在模板里遍历feedPosts即可渲染分页后的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:52:33