Невозможно найти какие-либо определения типа GraphQL для следующих указателей: при использовании JsonFileLoader инструмента graphql

При использовании инструментов graphql JsonFileLoader со следующей схемой schema.json:

{
  "UserObjectType": {
    "id": "Int",
    "username": "String",
    "firstName": "String",
    "lastName": "String",
    "avatar": "AvatarObjectType",
    "dateCreated": "DateTime",
    "notificationPreferences": "GenericScalar"
  },
  "AvatarObjectType": { "id": "Int", "avatarUrl": "String" },
  "scalar": ["DateTime", "GenericScalar"],
  "Query": {
    "GetCurrentUser": "UserObjectType"
  }
}

Я получаю следующую ошибку:

Unable to find any GraphQL type definitions for the following pointers:
            
              - UserObjectType
              ,
              - AvatarObjectType
              ,
              - scalar
              ,
              - Query

                
      at prepareResult (dist/load/src/load-typedefs.js:70:15)
      at loadTypedefs (dist/load/src/load-typedefs.js:35:12)

Вот мой код:

const JSONSchema = await loadSchema(schema, {
      loaders: [new JsonFileLoader()],
    });

    const mocks = {
      String: () => "abc",
      Int: () => 56,
      UserObjectType: () => ({
        firstName: "John",
        lastName: "Smith",
      }),
    };

    // Create a new schema with mocks
    const schemaWithMocks = addMocksToSchema({
      schema: JSONSchema,
      mocks,
    });

Репозиторий воспроизведения - это здесь, а точнее, тест, в котором я использую JSONFileLoader, - это здесь.

Обновлено: я использовал плагин интроспекции @graphql-codegen/cli для создания нового JSON, который вы можете найти здесь.

При загрузке этого в свой тест я получаю аналогичную ошибку:

graphql-tools › Runs mocked Schema with JsonFileLoader


          Unable to find any GraphQL type definitions for the following pointers:
            
              - __schema

                
      at prepareResult (dist/load/src/load-typedefs.js:70:15)
      at loadTypedefs (dist/load/src/load-typedefs.js:35:12)

как вы думаете, почему json должен быть отформатирован таким образом?

xadm 08.04.2021 21:48

Мои мыслительные процессы заключались в том, что я просто конвертировал строку схемы, которую успешно использовал, в файл .json. Вы можете увидеть пример здесь, где я использую ту же схему, но в строке схемы, для которой есть рабочий тест. github.com/Freddie-Pike/graphql_tools_workings/blob/main/… Если есть "правильный" способ форматирования json, я все уши!

Fredmental 08.04.2021 22:11

и "тип" преобразован в какое свойство? ... Я бы проверил graphql-code-generator.com и опцию Introspection JSON

xadm 08.04.2021 23:22

Думаю, вы не тестировали schema: JSONSchema.__schema,?

xadm 09.04.2021 17:21

@xadm только что это проверил. Ошибка возникает в этой строке, поэтому JSONSchema.__schema не будет работать const JSONSchema = await loadSchema(schema.__schema, { loaders: [new JsonFileLoader()], }); Я пытался передать schema.__schema в loadSchema, но получаю эту ошибку: Unable to find any GraphQL type definitions for the following pointers: - queryType, - mutationType, - subscriptionType, - types, - directives

Fredmental 09.04.2021 18:25

Думал про addMocksToSchema({ schema: JSONSchema.__schema,

xadm 09.04.2021 18:41

@xadm Я понимаю, но это не работает, потому что тест не проходит на loadSchema, потому что схема JSON находится в неправильном формате и не может найти никаких определений типа GraphQL при передаче schema в new JsonFileLoader.

Fredmental 09.04.2021 19:20

проверить файл json без уровня / объекта __schema?

xadm 09.04.2021 19:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
21
0

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