什么原因导致 GraphQL/Gatsby 中的 ["String" has no subfields] 图像错误?

Kyl*_*ell 7 graphql gatsby

终端上的整个错误消息是:

error GraphQL Error Field "image" must not have a selection since type "String" has no subfields.
Run Code Online (Sandbox Code Playgroud)

这似乎是一个真正的错误,它出现在这里:

gatsby 问题 4123 gatsby 问题 11412 gatsby 问题 11534 gatsby 问题 2050 gatsby 问题 3531 gatsby remark 插件问题 2 netlify-cms 问题 325

以及几个 Stackoverflow 问题/答案。

但是答案/修复无处不在。有些人拼错了他们的文件或订购了错误的插件(我认为)。其他时候,此人需要exports.onCreateNode在 gatsby-node.js 中进行大量重写。其他时候修复是重新克隆你的仓库并再次运行 npm install 。

无论如何,我已经尝试了对一切的感觉。似乎有数十或数百人在尝试开始使用 Gatsby 时会遇到此错误。他们应该检查什么?他们应该从哪里开始解决这个问题?似乎有 7 个潜在的事情需要检查......

Kyl*_*ell 6

这个错误似乎是由各种各样的事情引起的。就我而言,这是 gatsby-config.js 中的顺序。我不得不将 gatsby-plugin-sharp、gatsby-transformer-sharp 和 gatsby-transformer-remark 移到我的文件系统插件上方。

对于许多其他人(如果您搜索我提到的那些问题):

  1. 检查拼写
  2. 检查你有正确的插件(句号)
  3. 检查插件顺序
  4. 使用 graphiql 来查看您是否获得了图像字符串与实际节点(您可以在节点上使用转换器,但不能使用字符串)
  5. 删除 .cache 和 node 模块并重新安装

祝你好运,你永远不会回到你生命中的那 12 个小时。

  • 就我而言,gatsby-node.js 中缺少此代码 `exports.onCreateNode = ({ node, actions, getNode }) => { const { createNodeField } = actions fmImagesToRelative(node) // 转换 gatsby 图像的图像路径 if ( node.internal.type === `MarkdownRemark`) { const value = createFilePath({ node, getNode }) createNodeField({ name: `slug`, node, value, }) } } ` 添加该代码后不再出现以下错误字段“image”不得有选择,因为类型“String”没有子字段。 (2认同)