1

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

非常感谢提前

我的 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,
        },
      },
    })
  })
4

1 回答 1

1

似乎(根据评论)环境变量设置不正确,因为它们在本地工作(在两个环境下,gatsby developgatsby build)但不在 GitLab 或 Netlify 上。

处理 Gatsby + Netlify 需要在所有环境变量前面加上 GATSBY_,正如您在Netlify 文档中看到的那样:

任何以 为前缀的环境变量GATSBY_都由 Gatsby 处理,并在浏览器中提供给客户端 JavaScript 访问。请访问有关环境变量的 Gatsby 文档以获取更多信息。

因此,在本地更改所有变量,并在 Netlify 和 GitLab 仪表板中以GATSBY_.

CONTENTFUL_ENVIRONMENT
CONTENTFUL_API_KEY
CONTENTFUL_SPACE_ID

会变成:

GATSBY_CONTENTFUL_ENVIRONMENT
GATSBY_CONTENTFUL_API_KEY
GATSBY_CONTENTFUL_SPACE_ID

请记住,这种方法适用于所有环境变量,不仅适用于 Contentful 变量。

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

于 2021-05-04T09:09:17.787 回答