Javascript Gatsby-JSON中的绝对映像路径
我正在使用Javascript Gatsby-JSON中的绝对映像路径,javascript,json,image,gatsby,sharp,Javascript,Json,Image,Gatsby,Sharp,我正在使用gatsby transformer json查询gatsby中的json文件。JSON文件中有图像URL,但它们是绝对文件路径,Gatsby仅将相对路径转换为图像节点 我的JSON: { "defaultImage": "images/defaultImage.jpg" } 我的问题是: metadataJson { defaultImage { childImagageSharp { fixed(width: 3200, height: 2133) {
gatsby transformer json
查询gatsby中的json文件。JSON文件中有图像URL,但它们是绝对文件路径,Gatsby仅将相对路径转换为图像节点
我的JSON:
{
"defaultImage": "images/defaultImage.jpg"
}
我的问题是:
metadataJson {
defaultImage {
childImagageSharp {
fixed(width: 3200, height: 2133) {
...GatsbyImageSharpFixed
}
}
}
}
但是,由于盖茨比遇到了绝对路径,并且由于它不是相对路径,因此它不会将其转换为锐利的图像节点,因此会出现错误
如果是标记文件,我可以自己转换路径并将其保存到标记节点的字段
对象。但是,我无法使用gatsby transformer json
我如何转换JSON文件中的绝对路径,以便盖茨比用清晰的图像节点替换路径?您可以在任何类型的节点上使用
createNodeField
,而不仅仅是标记备注
如果按照以下方式设置gatsby config.js
:
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/meta`, <-- folder name is used to create node type name, i.e `MetaJson`
name: `meta`, <-- doesn't affect json node's type name
},
},
`gatsby-transformer-json`,
您还可以传入gatsby transformer json
,以便对json节点的内部类型名进行更精细的控制
与通过
gatsby transformer remark
转换的markdown一样,通过gatsby transformer json
转换的json也将子节点附加到其父文件节点上:
{
file( sourceInstanceName: { eq: "meta" } ) {
dir
childMetaJson {
fields {
foo
}
}
}
}
非常感谢。这种方法看起来是正确的,但无论我做什么,我都无法让盖茨比将路径转换为文件节点,即使我使用另一个正确转换的frontmatter图像的路径。它只是忽略该值并将其保留为字符串。@没有更多上下文很难判断,但我认为问题可能在于,如果盖茨比找到一个字段未链接到文件的节点,它将为所有其他节点(相同节点类型)假定该字段的类型。你的项目是开源的吗?或者你能在一个小型回购中复制这个问题吗?你有办法解决它吗?你介意分享你的解决方案吗?我也有同样的挣扎。。。
{
file( sourceInstanceName: { eq: "meta" } ) {
dir
childMetaJson {
fields {
foo
}
}
}
}