Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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
Javascript Gatsby-JSON中的绝对映像路径_Javascript_Json_Image_Gatsby_Sharp - Fatal编程技术网

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
      }
    }
  }
}