Что вызывает ошибку изображения [«Строка» не имеет подполей] в GraphQL/Gatsby?

Полное сообщение об ошибке на терминале:

error GraphQL Error Field "image" must not have a selection since type "String" has no subfields.

Это похоже на настоящую дурацкую ошибку, она появляется здесь:

Гэтсби выпуск 4123Гэтсби выпуск 11412Гэтсби выпуск 11534гэтсби выпуск 2050Гэтсби выпуск 3531Гэтсби комментарий плагин вопрос 2netlify-cms проблема 325

А также несколько вопросов/ответов Stackoverflow.

Но ответы/исправления повсюду. Некоторые люди неправильно пишут свои файлы или неправильно заказывают плагины (я так думаю). В других случаях человеку нужно сильно переписать exports.onCreateNode в gatsby-node.js. В других случаях исправление заключается в повторном клонировании вашего репо и повторном запуске npm install.

Во всяком случае, я пробовал то, что чувствует обо всем. Кажется, многие десятки или сотни людей столкнутся с этой ошибкой, когда попытаются начать работу с Гэтсби. Что они должны проверить? С чего им начать исправлять это? Кажется, есть 7 потенциальных вещей, которые нужно проверить...

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
7
0
4 552
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Эта ошибка, по-видимому, вызвана самыми разными причинами. В моем случае это был порядок в gatsby-config.js. Мне пришлось переместить gatsby-plugin-sharp, gatsby-transformer-sharp и gatsby-transformer-remark над плагинами файловой системы.

Для многих других (если вы просматриваете те проблемы, которые я упомянул):

  1. проверять орфографию
  2. проверьте, что у вас есть правильные плагины (точка)
  3. проверить порядок плагинов
  4. используйте graphiql, чтобы увидеть, получаете ли вы строку для изображений по сравнению с фактическим узлом (вы можете использовать преобразователи на узле, но не строку)
  5. удалите модули .cache и node и переустановите

удачи, ты никогда не вернешь эти 12 часов своей жизни.

В моем случае этот код был пропущен из gatsby-node.js exports.onCreateNode = ({ node, actions, getNode }) => { const { createNodeField } = actions fmImagesToRelative(node) // convert image paths for gatsby images if (node.internal.type === MarkdownRemark) { const value = createFilePath({ node, getNode }) createNodeField({ name: slug, node, value, }) } } После добавления этого кода больше нет ошибки Поле «изображение» не должно иметь выбора, так как тип «Строка» не имеет подполей.

Zeeshan Safdar 16.10.2019 14:02

@ZeeshanSafdar Большое спасибо! Но я хотел бы отметить, что мы должны сначала установить Гэтсби-замечание-относительные-изображения.

MegaCasper 08.09.2020 20:14

Чтобы добавить в контрольный список при обнаружении этой ошибки:

Убедитесь, что у вас действительно есть изображения в папке, настроенной в gatsby-conf.js:

{
  resolve: `gatsby-source-filesystem`,
  options: {
    name: `images`,
    path: `${__dirname}/src/images`,
  },
}

и что они соответствуют любому пути в вашем graphql. Если ваш запрос возвращает «myImage.png», но это не файл в ваших изображениях, вы получите эту ошибку.

Другие вопросы по теме