是什么导致GraphQL / Gatsby中的[“ String”没有子字段]图像错误?

时间:2019-04-17 22:27:29

标签: graphql gatsby

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

error GraphQL Error Field "image" must not have a selection since type "String" has no subfields.

这似乎是对错误的真正怀疑,它出现在这里:

gatsby issue 4123 gatsby issue 11412 gatsby issue 11534 gatsby issue 2050 gatsby issue 3531 gatsby remark plugin issue 2 netlify-cms issue 325

以及一些Stackoverflow问题/答案。

但是答案/解决方法无处不在。有些人拼写了错误的文件或订购了错误的插件(我认为)。其他时间,该人员需要在gatsby-node.js的exports.onCreateNode中进行大量重写。其他时候,解决方法是重新克隆您的存储库,然后再次运行npm install。

无论如何,我尝试了一切的感觉。当他们尝试开始使用盖茨比时,似乎有数十甚至数百人会遇到此错误。他们应该检查什么?他们应该从哪里开始解决此问题?似乎有7件事需要检查...

2 个答案:

答案 0 :(得分:2)

遇到此错误时添加到检查表:

确保在 gatsby-conf.js 中配置的文件夹中确实有图像:

{
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `images`,
    path: `${__dirname}/src/images`,
  },
}

并且它们匹配您的 graphql 中的任何路径。如果您的查询返回“myImage.png”,但它不是图像中的文件,您将收到此错误。

答案 1 :(得分:0)

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

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

  1. 检查拼写
  2. 检查您是否使用了正确的插件(期限)
  3. 检查插件顺序
  4. 使用graphiql查看相对于实际节点的图像字符串(可以在节点上使用转换器,而不是字符串)
  5. 删除.cache和节点模块并重新安装

祝您好运,您将永远无法恢复那12个小时的生活。