我使用的是基于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可以正常工作。 我想念什么?
非常感谢您。
答案 0 :(得分:3)
您的Array#foreach循环正在遮盖_
,因此它不再引用lodash。它引用当前的数组值undefined
。
更改.forEach((_, i)
并使用其他变量名,以免遮盖_
。例如。 .forEach((el, i)
。