Поле Error GraphQL "изображение" типа "Файл" должно иметь выбор подполей. Вы имели в виду "image { ... }"?

Я строю сайт с помощью Gatsby и Netlify CMS. Я использовал Gatsby Site Starter.

Я продолжаю получать изображение "Поле ошибки GraphQL" типа "Файл", должно иметь выбор подполей. Вы имели в виду "изображение {...}"? " ошибка при попытке развертывания в Netlify. На localhost все работает отлично, но с изображениями что-то не получается. Я посмотрел примеры, представленные на странице Netlify CMS, и нашел здесь человека с точно такой же настройкой, виджетом списка (действующим как галерея) с изображением и описанием внутри.

config.yml

backend:
  name: git-gateway
  repo: grantballmer/gatsby-starter-netlify-cms
  branch: master

media_folder: static/img
public_folder: /img

collections:

  - name: "gallery"
    label: "Gallery"
    folder: "src/pages/services"
    create: true
    fields: 
      - { label: "Template Key", name: "templateKey", widget: "hidden", default: "gallery" }
      - {label: "Title", name: "title", widget: "string"}
      - label: "Grid"
        name: "grid"
        widget: "list"
        fields: 
          - {label: "Image", name: "image", widget: "image"}
          - {label: "Band Name", name: "band", widget: "string"}`

gallery.js (файл шаблона)

import React from 'react';
import { graphql } from 'gatsby';
import Layout from "../components/Layout";
import PhotoGrid from "../components/services/PhotoGrid";

const GalleryTemplate = ({ data }) => {
  const { markdownRemark: gallery } = data;
  const images = gallery.frontmatter.grid;

  return (
    <Layout>
      <PhotoGrid images={images} />
    </Layout>
  );
};

export default GalleryTemplate;

export const galleryQuery = graphql `
  query Gallery($id: String!) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        grid {
          image 
          band
        }
      }
    }
  }
`;

/services/photography.md

---
templateKey: 'gallery'
title: photography
grid:
  - band: chris-cordle
    image: /img/chris-cordle-lg.jpg
  - band: 'chirp '
    image: /img/chirp-lg-1-.jpg
---

1 ответ

Я не работал с Netlify CMS, но похоже, что ваше изображение может быть коллекцией с подполями (пример: image { source, id .. }, в этом случае вы должны переписать ваш запрос, подобный этому:

export const galleryQuery = graphql `
  query Gallery($id: String!) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        grid {
          image { 
             id
             source
             ..
          }
          band
        }
      }
    }
  }
`;

Попробуй добавить что-нибудь с помощью плагина gastby-plugin-sharp.

что-то связать это:

export const galleryQuery = graphql`
  query Gallery($id: String!) {
    markdownRemark(id: { eq: $id }) {
      html
      frontmatter {
        title
        grid {
          image {
            childImageSharp {
              fluid(maxWidth: 2048, quality: 100) {
                ...GatsbyImageSharpFluid
              }
            }
          }
          band
        }
      }
    }
  }
`
Другие вопросы по тегам