graphql - Gatsby graphiQL - 不能为不可为空的字段 ImageSharpFluid.src 返回 null
问题描述
我正在将 Gatsby 和 graphql 与无头 WordPress 一起用于网站。
我想使用 gatsby-image 插件来获得来自 WordPress 的图像的 srcSet 和模糊效果,但它在 graphiQL 操场上引发错误。为了更好地理解,我想在下面逐步解释整个过程。
gatsby-image 插件有两种类型的响应式图像固定和流动:
要在两者之间做出决定,问问自己:“我知道这张图片的确切尺寸吗?” 如果是,则为第一种。如果没有并且它的宽度和/或高度需要根据屏幕的大小而变化,那么它就是第二种类型。
所以,我需要第二个 one- fluid。
它还有两个图像组件静态和动态。
如果您使用的是每次使用该组件时都相同的图像,例如徽标或首页英雄图像,则可以使用 StaticImage 组件。
如果您需要动态图像(例如它们来自 CMS),您可以通过 GraphQL 加载它们并使用 GatsbyImage 组件显示它们。
我正在使用 WordPress(即 CMS)。所以,我需要第二个 -动态
在编写查询之前,我必须了解如何对来自 WordPress 方案的文件进行正确的查询。
出于这个原因,我发现 Gatsby 有一个gatsby-source-wordpress插件来从 WordPress 中提取图像。
我已经安装并配置了所有必需的软件包,例如gatsby-plugin-image
, gatsby-plugin-sharp
,gatsby-transformer-sharp
等。我所做的一切都完全按照官方文档所说的那样。
那时一切都准备好进行查询,所以我尝试了他们在文档中的第一个示例 -从 wordpress 中提取图像并且它工作。
所以是时候最终得到我想要的并尝试第二个示例(流体),但它失败并显示错误消息Cannot return null for non-nullable field ImageSharpFluid.srcSet.
当我尝试获取时它也失败了gatsbyImageData
我该如何解决这个问题?
提前致谢。
解决方案
您提到的文档gatsby-source-wordpress
已过时。签出这个:https ://www.gatsbyjs.com/plugins/gatsby-source-wordpress/
您的查询看起来像旧查询。我不确定您正在运行哪些插件版本,但如果您正在运行最新版本,您的查询应该如下所示:
query MyQuery {
allWpPost {
nodes {
featuredImage {
node {
localFile {
childrenImageSharp {
gatsbyImageData(width: 200, placeholder: BLURRED, formats: [AVIF, WEBP, JPG])
}
}
}
}
}
}
}
此外,不推荐使用 gatsby-image 插件,取而代之的是gatsby-plugin-image。
如果您想要一个设置如何组合在一起的示例,您可以搜索启动器CMS:WordPress
并v3
找到一个启动器。盖茨比首发
希望这能让你开始:)
推荐阅读
- .net - 组装时制作非托管类型 ComVisible(true):ComVisible(false)
- go - 合并两个结构(相同类型)?
- multithreading - 线程支持如何在操作系统 High Sierra 中工作?
- cordova - Ionic 3 - 应用程序在初始屏幕上挂起(可能与 Ionic Deploy 有关)
- postgresql - Postgres - 更大的数据库总是会变慢吗?
- azure - 如果在 Azure 上创建 VM 时发生错误,我在哪里可以找到错误日志
- mysql - 如何编写一个自联接,其中包含可能并不总是存在的条件的行
- java - 在底部导航器上旋转处理,在片段上导航
- javascript - 循环播放视频,在前一个结束之前一个接一个
- css - 如何使用“高度:适合内容”为动态高度变化设置动画