如何解决“无法读取未定义的属性”

时间:2018-11-28 07:16:35

标签: javascript pagination graphql gatsby

我使用的是基于JS的静态网站生成器Gatsby,并且我试图在对同一页面进行分页时为每个类别创建一个页面。 这是我在gatsby-node.js中的代码,出现错误“无法读取未定义的属性'kebabCase'”。

        let categories = []
        _.each(result.data.allMarkdownRemark.edges, edge => {
            if (_.get(edge, "node.frontmatter.categories")) {
                categories = categories.concat(edge.node.frontmatter.categories)
            }
        })

        const categoryarticles = result.data.allMarkdownRemark.edges
        const categoryarticlesPerPage = 6
        const numPages = Math.ceil(categoryarticles.length / categoryarticlesPerPage)

        Array.from({ length: numPages }).forEach((_, i) => {
            categories.forEach(category => {
                createPage({
                    path: i === 0 ? `/${_.kebabCase(category)}` : `/${_.kebabCase(category)}/${i + 1}`,
                    component: managementTemplate,
                    context: {
                        category,
                        limit: categoryarticlesPerPage,
                        skip: i * categoryarticlesPerPage,
                    },
                })
            })
        })

category实际上是定义的,实际上,当我创建类别页面而不尝试分页时,代码category.forEach(category ... ect可以正常工作。 我想念什么?

非常感谢您。

1 个答案:

答案 0 :(得分:3)

您的Array#foreach循环正在遮盖_,因此它不再引用lodash。它引用当前的数组值undefined

更改.forEach((_, i)并使用其他变量名,以免遮盖_。例如。 .forEach((el, i)