Запрос Graphql не возвращает изображение для gatsby-image, но работает в graphiQL - PullRequest
0 голосов
/ 25 февраля 2020

Я создаю блог с несколькими gatsby-source-filesystem экземплярами.

Я пытаюсь использовать gatsby-image на странице, но он просто возвращает: TypeError: Cannot read property 'fixed' of undefined

Изображение, которое я пытаюсь запросить, находится по адресу src / images

спиртных напитков. js

import React from "react"
import { graphql } from "gatsby"
import Img from 'gatsby-image'

import Layout from "../components/layout"
import SEO from "../components/seo"
import Paper from '../components/paper'


const SpiritsPage = ({data}) => (
        <Layout>
            <SEO title="Spirits" />
            <Paper>
                <h1>Spirits</h1>
                <p>This section is still under construction.</p>
                <Img fixed={data.allImageSharp.edges.node.fixed} alt />
            </Paper>
        </Layout>
    )

export const query = graphql`
    query {
        allImageSharp(filter: {fluid: {originalName: {eq: "australia.png"}}}) {
            edges {
                node {
                    fixed {
                        ...GatsbyImageSharpFixed
                    }
                }
            }
        }
    }

`

export default SpiritsPage

gatsby-config. js

{
            resolve: `gatsby-source-filesystem`,
            options: {
                name: `distilleries`,
                path: `${__dirname}/content/distilleries`,
            },
        },
        {
            resolve: `gatsby-source-filesystem`,
            options: {
                name: `images`,
                path: `${__dirname}/src/images`,
            },
        },
        {
            resolve: `gatsby-source-filesystem`,
            options: {
                name: `posts`,
                path: `${__dirname}/content/posts`
            },
        },
        `gatsby-transformer-sharp`,
        `gatsby-plugin-sharp`,

1 Ответ

0 голосов
/ 26 февраля 2020

data.alImageSharp.edges - это массив, поэтому вы не можете сделать data.allImageSharp.edges.node. Вместо этого вам нужно взять нужный элемент из массива edges и затем выполнить node.fixed для него. Будет работать что-то вроде следующего: data.allImageSharp.edges[0].node.fixed

credit - goto1

...