我正在尝试使用Gatsby和GraphQl创建一个博客。在开发模式下,一切正常。 GraqhQl找到了来自Sanity CMS的数据,但是一旦我尝试构建站点,它就会引发一个错误,即找不到“ SiteSettings”。
这是在博客页面上运行的博客查询:
export const blogQuery = graphql`
query BlogPageQuery {
site: sanitySiteSettings(_id: { regex: "/(drafts.|)siteSettings/" }) {
title
description
keywords
}
posts: allSanityPost(
limit: 6
sort: { fields: [publishedAt], order: DESC }
filter: { slug: { current: { ne: null } }, publishedAt: { ne: null } }
) {
edges {
node {
id
publishedAt
title
_rawExcerpt
slug {
current
}
}
}
}
}
`
这是react组件:
const BlogPage = props => {
const { data, errors } = props
if (errors) {
return (
<Layout>
<GraphQLErrorList errors={errors} />
</Layout>
)
}
const site = (data || {}).site
const postNodes = (data || {}).posts
? mapEdgesToNodes(data.posts)
.filter(filterOutDocsWithoutSlugs)
.filter(filterOutDocsPublishedInTheFuture)
: []
if (!site) {
throw new Error('Missing Site settings.')
}
return (
<Layout>
<SEO
title={site.title}
description={site.description}
keywords={site.keywords}
/>
<Container>
<h1>{site.title}</h1>
{postNodes && (
<BlogPostPreviewList
title="Latest blog posts"
nodes={postNodes}
browseMoreHref="/archive/"
/>
)}
</Container>
</Layout>
)
}
它应该以某种方式从 props 获取数据。 我尝试使用 StaticQuery 而不是使用 props 。使用开发服务器时,它再次起作用,但尝试构建服务器时,它却不起作用。
这可能是一个ssr问题吗?