При использовании инструментов 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. Вы можете увидеть пример здесь, где я использую ту же схему, но в строке схемы, для которой есть рабочий тест. github.com/Freddie-Pike/graphql_tools_workings/blob/main/… Если есть "правильный" способ форматирования json, я все уши!
и "тип" преобразован в какое свойство? ... Я бы проверил graphql-code-generator.com и опцию Introspection JSON
Думаю, вы не тестировали schema: JSONSchema.__schema,?
@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
Думал про addMocksToSchema({ schema: JSONSchema.__schema,
@xadm Я понимаю, но это не работает, потому что тест не проходит на loadSchema, потому что схема JSON находится в неправильном формате и не может найти никаких определений типа GraphQL при передаче schema в new JsonFileLoader.
проверить файл json без уровня / объекта __schema?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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