Netlify 部署无法查询类型 "Query" 上的字段 "allContentfulGallery"

Netlify deployment Cannot query field "allContentfulGallery" on type "Query"

我正在 React.js、Gatsby.js 和 Contentful 上创建应用程序。我的应用程序在我的本地运行良好,但是当我将我的应用程序部署到 Natilify Cannot query field "allContentfulGallery" on type "Query". 并且我的 GraphQl 查询也运行良好。请帮助我,我非常坚持这个错误。“allContentfulGallery”是我的 collection 名称

非常感谢

我的gatsby-node.js 配置

  const galleryResult = await graphql(`
    query gallery {
      allContentfulGallery {
        edges {
          node {
            title
            slug
            images {
              title
              file {
                url
              }
            }
            sys {
              contentType {
                sys {
                  id
                  linkType
                  type
                }
              }
              revision
              type
            }
          }
        }
      }
    }
  `)  
  var galleryArr =
    galleryResult &&
    galleryResult.data &&
    galleryResult.data.allContentfulGallery &&
    galleryResult.data.allContentfulGallery.edges
  galleryArr.forEach(edge => {
    createPage({
      path: `/gallery/${edge.node.slug}`,
      component: galleryTemplate,
      context: {
        title: edge.node.title,
        slug: edge.node.slug,
        sys: {
          ...edge.node.sys,
        },
      },
    })
  })

似乎(根据评论)environment variables 设置不正确,因为它们在本地工作(在两种环境下,gatsby developgatsby build)但不在 GitLab 上也不是 Netlify。

处理 Gatsby + Netlify 需要在所有环境变量前加上 GATSBY_ 前缀,如您在 Netlify docs:

中所见

Any environment variables prefixed with GATSBY_ are processed by Gatsby and made available in the browser for client-side JavaScript access. Visit the Gatsby docs about environment variables for more information.

因此,在本地更改所有变量,并在 Netlify 和 GitLab 仪表板中为它们添加前缀 GATSBY_

CONTENTFUL_ENVIRONMENT
CONTENTFUL_API_KEY
CONTENTFUL_SPACE_ID

将成为:

GATSBY_CONTENTFUL_ENVIRONMENT
GATSBY_CONTENTFUL_API_KEY
GATSBY_CONTENTFUL_SPACE_ID

请记住,此方法适用于所有环境变量,而不仅仅是 Contentful 变量。

通常我很确定解决方案,但在你的情况下,如果你没有正确设置环境变量,插件配置应该会失败,在你的问题提示之前中断编译,但事实并非如此。