使用Gatsby和Sanity构建网站时,GraphQl找不到CMS内容,但在开发人员模式下找到它

时间:2019-12-12 14:26:27

标签: reactjs deployment graphql gatsby sanity

我正在尝试使用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问题吗?

0 个答案:

没有答案