GraphQL 中的 Gatsby pageContext 为空
Gatsby pageContext empty in GraphQL
我正在通过 Contentful 构建一个具有多种语言的动态 Gatsby 网站。我在 gatsby-node.js
中的 pageContext
对象中传递页面 ID 以获取每个页面上的必要内容,但在根 URL /
中我的 [=12] 中的数据=] 对象丢失。
在我的 index.js
文件中,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",但我无法在文档中找到任何描述它的内容。
有人有这方面的经验吗?
是的,Gatsby 默认为 src/pages
中的每个 js 文件创建一个页面。尝试将您的模板移动到其他文件夹,例如 src/templates
,并相应地调整 createPage()
中 component
的值。
我正在通过 Contentful 构建一个具有多种语言的动态 Gatsby 网站。我在 gatsby-node.js
中的 pageContext
对象中传递页面 ID 以获取每个页面上的必要内容,但在根 URL /
中我的 [=12] 中的数据=] 对象丢失。
在我的 index.js
文件中,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",但我无法在文档中找到任何描述它的内容。
有人有这方面的经验吗?
是的,Gatsby 默认为 src/pages
中的每个 js 文件创建一个页面。尝试将您的模板移动到其他文件夹,例如 src/templates
,并相应地调整 createPage()
中 component
的值。