如何访问 Gatsby 中“file”或“allFiles”GraphQL 查询返回的文件的文本内容?

Kev*_*n S 5 file graphql gatsby

我正在尝试访问 Gatsby 中“文件”GraphQL 查询返回的文本文件的内容(通过 gatsby-source-filesystem 插件)。该查询肯定返回一个文件节点。问题是我期望内部>内容字段包含文件的内容,但事实并非如此;它始终为空。下面是使用 Gatsby 的 GraphiQL 浏览器获得的示例查询和结果。问题是(1)我做错了什么,以及(2)我应该怎么做才能实现访问文件内容的意图?

询问

query MyQuery {
  file(ext: {eq: ".lean"}, name: {eq: "test"}) {
    name
    relativePath
    size
    internal {
      content
      mediaType
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

结果

{
  "data": {
    "file": {
      "name": "test",
      "relativePath": "test.lean",
      "size": 10,
      "internal": {
        "content": null,
        "mediaType": "application/octet-stream"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

从结果中可以看到,该文件不是空的(该文件内部有一小行 Lean Prover 代码),但internal>content 字段的值仍然为空。我显然做错了什么,但经过一个小时的尝试找出错误后,我认为其他人也可能会从快速答案中受益。感谢您阐明我的问题。

Kev*_*n S 5

好的,所以 gatsby-source-filesystem 实际上导出了一个辅助方法 loadNodeContents (当然,它只是从文件中读取)。唯一的问题是这个插件的公共文档网站上没有记录这一点。这是出现相关代码的文件。 https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-filesystem/src/index.js