Gatsby搭建Contentful博客报#11322错误:创建页面未传组件路径
问题根源
- 报错的直接触发原因是
gatsby-node.js内调用createPage方法时,传入的字段名不符合Gatsby的参数规范。Gatsby要求指定模板组件路径的字段必须是单数形式的component,你错写成了复数的components,Gatsby无法解析到对应的模板路径,因此抛出“创建页面时未传入组件路径”的错误。
修复操作
- 打开项目根目录的
gatsby-node.js文件,找到createPage的调用块 - 将原代码里的
components: blogPost,一行修改为component: blogPost,,仅删掉字段名末尾多余的字母s即可 - 保存修改后重新执行
gatsby develop,原有报错即可消失
可同步修正的逻辑问题
当前代码里的文章导航上下篇取值逻辑是反向的,会导致前端“上一篇/下一篇”的链接指向不符合预期:
- 原代码中会把发布时间更晚的文章标记为“上一篇”,更早发布的文章标记为“下一篇”
- 可将对应取值逻辑修正为:
// 遍历文章列表生成页面关联关系 posts.forEach((post, index) => { // 上一篇:列表中排在当前条目之前的内容 const previous = index === 0 ? null : posts[index - 1].node // 下一篇:列表中排在当前条目之后的内容 const next = index === posts.length - 1 ? null : posts[index + 1].node createPage({ path: post.node.slug, component: blogPost, // 修正后的正确字段名 context: { slug: post.node.slug, previous, next, }, }) })
内容的提问来源于stack exchange,提问作者modernphilosophy
相关产品推荐
相关产品推荐

