Gatsby pageContext 在 GraphQL 中为空

我正在通过 Contentful 构建一个具有多种语言的动态 Gatsby 网站。pageContext我在我的对象中传递页面的 IDgatsby-node.js以获取每个页面上的必要内容,但在根 URL 上/,我的pageContext对象内的数据丢失了。


在我的index.js-file 中,pageContext根页面上的 是空的/,但参数pageContext.isCreatedByStatefulCreatePages设置为true. 但是,对于在对象中创建的每个其他页面gatsby-node.js,pageContext它都会按原样显示。


我正在gatsby-node.js这样创建我的页面:


const baseUrl = locale === "da" ? "/" : `/${locale}/`

console.log(`${baseUrl}${slug ? slug : ""}`)

createPage({

  path: `${baseUrl}${slug ? slug : ""}`,

  component: path.resolve("./src/pages/index.js"),

  context: {

    id,

    slug,

    locale,

  },

})

我上面console.log的输出如下:


/virksomhed

/konsulent

/kontakt

/ <-- Page context is empty here

/om-os

/en/company

/en/consultant

/en/contact

/en/

/en/about-us

我可以看到每个页面都已创建。在索引页面 ("/") 以外的任何其他页面上,isCreatedByStatefulCreatePages 设置为false。


我怀疑 Gatsby 以某种方式覆盖了根 URL 的“createPage”,但我无法在文档中找到任何描述它的内容。


有这方面经验的人吗?


三国纷争
浏览 140回答 1
1回答

慕的地10843

是的,Gatsby 默认为每个 .js 文件创建一个页面src/pages。尝试将您的模板移动到其他文件夹,例如src/templates并相应地调整componentin的值createPage()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript