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