-1

背景:

我正在/src/content/使用页面布局模板以编程方式创建带有 .mdx 文件的页面。一切正常,直到我需要从 .mdx 文件的 frontmatter 中获取图像,格式如下:

示例:/src/content/.../.../hello-world.mdx

---
title: foo
image: ../images/icon.png
---
hello world.

我在我的gatsby-config.js. 此外,我gatsby-config.js使用 gatsby-source-filesystem 的选项设置了我的文件,以在 .mdx 文件中查找 .mdx 文件/src/content

问题:

Gatsby在此声明“任何包含图像的 GraphQL 文件对象都将具有一个 childImageSharp 字段,您可以使用该字段来查询图像数据。” 然而,这对我来说并没有发生: 在此处输入图像描述

它只是将image:frontmatter 中的键视为字符串,而从不给它childImageSharp字段。试图通过写出字段来强制查询只会导致错误。

然而!!!

如果我使用相同的 .mdx 文件并将其放入/src/pages突然 gatsby-plugin-image 开始正常运行并提供以下childImageSharp字段:

在此处输入图像描述

为什么?

更新:将 .mdx 文件放入/src/content/作品中,childImageSharp 字段出现在 GraphQL 中,但 .mdx 文件放置在更深的位置(例如:)src/content/recipes/guacamole/不起作用。

4

1 回答 1

1

回答:

../images/icon.png不是存在于其中的文件/src/content/recipes/guac/引用存在于 中的图像的有效路径/src/images/。我的图像密钥在 .mdx frontmatter 中应该具有的正确路径应该相对于 .mdx 的位置(例如:) image: ../../../images/icon.png

我的路错了。因此 GraphQL 没有将其识别为文件,也没有创建 childImageSharp 字段。

于 2021-05-05T18:11:42.467 回答