Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何访问由";返回的文件的文本内容;文件";或;“所有文件”;Gatsby中的GraphQL查询?_File_Graphql_Gatsby - Fatal编程技术网

File 如何访问由";返回的文件的文本内容;文件";或;“所有文件”;Gatsby中的GraphQL查询?

File 如何访问由";返回的文件的文本内容;文件";或;“所有文件”;Gatsby中的GraphQL查询?,file,graphql,gatsby,File,Graphql,Gatsby,我试图访问Gatsby中的“file”GraphQL查询返回的文本文件的内容(通过Gatsby源文件系统插件)。查询肯定会返回一个文件节点。问题是,我希望internal>contents字段包含文件的内容,但它没有;它总是空的。这里是一个使用Gatsby的GraphiQL浏览器获得的示例查询和结果。问题是(1)我做错了什么,(2)我应该做什么来达到访问文件内容的目的 质疑 结果 { "data": { "file": { "name": "test", "r

我试图访问Gatsby中的“file”GraphQL查询返回的文本文件的内容(通过Gatsby源文件系统插件)。查询肯定会返回一个文件节点。问题是,我希望internal>contents字段包含文件的内容,但它没有;它总是空的。这里是一个使用Gatsby的GraphiQL浏览器获得的示例查询和结果。问题是(1)我做错了什么,(2)我应该做什么来达到访问文件内容的目的

质疑

结果

{
  "data": {
    "file": {
      "name": "test",
      "relativePath": "test.lean",
      "size": 10,
      "internal": {
        "content": null,
        "mediaType": "application/octet-stream"
      }
    }
  }
}

从结果中可以看出,文件不是空的(文件中有一行简短的精益验证代码),但internal>content字段的值仍然为空。我显然做错了什么,但经过一个小时的努力,我想其他人也可能从快速回答中受益。感谢您对我的问题进行解释。

好的,所以gatsby源文件系统实际上导出了一个助手方法loadNodeContents(当然它只是从文件中读取)。唯一的问题是,这个插件的公共文档站点上没有记录这一点。这是显示相关代码的文件。

很抱歉在这里自言自语,但上面的功能似乎不起作用。基本问题似乎是fs在客户端不可用。还在看。好的,还有一条评论。问题是文件系统(fs)不适用于在Gatsby中编写的大多数代码,因为这些代码将从S3存储桶中的某个目录或其他地方运行。fs仅在网站构建时可用。因此,诀窍在于fs在gatsby-node.js文件中可用。内容可以从那里获取,并作为辅助字段附加到“File”或“allFiles”查询检索的文件节点。为此,需要实现onNodeCreate。辅助字段“fields.content”可用于查询并将内容返回给客户端。
{
  "data": {
    "file": {
      "name": "test",
      "relativePath": "test.lean",
      "size": 10,
      "internal": {
        "content": null,
        "mediaType": "application/octet-stream"
      }
    }
  }
}