Необязательное поле изображения и 'childImageSharp' как ноль | Гэтсби, GraphQL и YAML - PullRequest
1 голос
/ 06 апреля 2020

РЕДАКТИРОВАТЬ: В итоге я создал небольшую репродукцию своей проблемы и разместил ее на GitHub от Gatsby, и в итоге мне помогли.
Вот ссылка на эту проблему!


Извините заранее, если эта проблема была рассмотрена где-то еще, но я не смог найти ответ на то, что мне нужно.

В настоящее время я работаю с файлами Gatsby, GraphQl и YAML, и у меня есть несколько разделов, которые я сопоставляю, но некоторые имеют изображения, а некоторые нет.
Я определил свой GraphQL, указав изображение с childImageSharp

sections {
              title
              description
              imageHere {
                childImageSharp {
                  fluid(maxWidth: 600) {
                    ...GatsbyImageSharpFluid_noBase64
                  }
                }
              }

, и я нашел решение, которое включало добавление этого в мой gatsby- node.js, чтобы пути можно было правильно прочитать из моих файлов YAML

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions;
  const typeDefs = `
    type allProjectPageYaml implements Node {
      imageHere: [String]!
    }
  `;
  createTypes(typeDefs);
};

Теперь мой проблема в том, что в некоторых разделах есть поле imageHere, а в некоторых нет

sections:
 - title: Title 1
   description: Description 1
 - title: Title 2
   description: Description 2
   imageHere: Image1

Я получаю ошибку TypeError: Невозможно прочитать свойство childImageSharp с нулевым значением

Какой у меня обходной путь?

1 Ответ

0 голосов
/ 08 апреля 2020

Вы определили imageHere как обязательный массив строк с этим: imageHere: [String]!.

Если на самом деле предполагается, что это необязательный узел изображения, вы можете вместо этого определить его как правильный type (что-то вроде GatsbyImage, но я не могу точно вспомнить, что это за руки - вы должны иметь возможность проверить это в Graphiql). Это было бы больше похоже на imageHere: GatsbyImage (без взрыва, без квадратных скобок).

...