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