找不到盖茨比图像

Gatsby Image Not Found

所以我正在忙着创建一个降价博客,但出于某种原因我无法使用图片。

盖茨比-config.js

plugins: [
    'gatsby-plugin-image',
    'gatsby-plugin-sharp',
    'gatsby-transformer-sharp',
    {
      resolve: 'gatsby-source-filesystem',
      options: {
        name: 'images',
        path: `${__dirname}/src/images/`,
      },
      __key: 'images',
    },
]

图像存储在src/images

blogpost.md

---
title: New Provider
image: ../images/new-provider.jpg
imageMeta:
  attribution:
  attributionLink:
featured: false
---

这是我查询数据的方式

export const query = graphql`
  query PostsByID($slug: String!) {
    mdx(slug: { eq: $slug }) {
      body
      frontmatter {
        title
        authors
        date
        featured
        image
        tags
      }
    }
  }
`;

这是我的 img 元素

<Img alt={title} fluid={image} key={title} />

// I tried this too
<img alt={title} src={image} />

当页面加载时,我只看到我的替代文字,在控制台中我看到 http://localhost:8000/images/new-provider.jpg

要查询图像,您需要 childImageSharp 数据(从 Gatsby 的 sharps 和 transformer 中获取,您已经安装了它们)。

如果正确设置了数据结构和路径,您的 GraphQL 查询应如下所示:

export const query = graphql`
  query PostsByID($slug: String!) {
    mdx(slug: { eq: $slug }) {
      body
      frontmatter {
        title
        authors
        date
        featured
        image {
          childImageSharp {
            fluid(width: 125, height: 125) {
              ...GatsbyImageSharpFluid
            }
          }
        }
        tags
      }
    }
  }
`;

您已经拥有了 Gatsby 图像渲染图像所必须的正确节点和属性。然后你可以使用:

<Img alt={title} fluid={image.childImageSharp.fluid} key={title} />

如果您的 GraphQL 查询无法获取 childImageSharp 节点(在 localhost:8000/___graphql 的 GraphiQL 游乐场中对其进行测试),请检查降价路径的相关性。