【问题标题】:Netlify deployment Cannot query field "allContentfulGallery" on type "Query"Netlify 部署无法在“查询”类型上查询字段“allContentfulGallery”
【发布时间】:2021-07-26 13:32:00
【问题描述】:

我正在 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,
        },
      },
    })
  })

【问题讨论】:

  • "我的应用程序在我的本地运行良好" --> 意味着运行 gatsby build 有效吗?您是否在 Netlify 中上传了 Contentful API 密钥?
  • 是的,gatsby 构建在我的本地运行良好,应用程序运行良好。是的,我已将 API 密钥上传到我的 GitLab,Netlify 与 Gitlab 自动同步。
  • 它们是否以GATSBY_ gatsbyjs.com/docs/how-to/local-development/… 为前缀?
  • 没有 .env 像 CONTENTFUL_ENVIRONMENT='master' 和 gatsby-config 有环境: process.env.CONTENTFUL_ENVIRONMENT ? process.env.CONTENTFUL_ENVIRONMENT:“主人”,

标签: reactjs gatsby netlify contentful netlify-cli


【解决方案1】:

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

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

任何以GATSBY_ 为前缀的environment variables 都由 Gatsby 并在浏览器中提供客户端 JavaScript 使用权。访问Gatsby docs about environment variables了解更多信息 信息。

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

CONTENTFUL_ENVIRONMENT
CONTENTFUL_API_KEY
CONTENTFUL_SPACE_ID

会变成:

GATSBY_CONTENTFUL_ENVIRONMENT
GATSBY_CONTENTFUL_API_KEY
GATSBY_CONTENTFUL_SPACE_ID

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

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

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 2021-06-03
    • 2021-10-09
    • 2021-02-03
    • 2020-07-27
    • 2018-08-30
    • 2018-04-21
    • 2020-05-31
    相关资源
    最近更新 更多