Ошибка импорта схемы Graphql: тип «Контакт» не найден в документе

Я использую graphql-import для загрузки схемы graphql, написанной в отдельном файле. У меня есть более 40+ отдельных файлов схем, но, к удивлению, он не распознает тип Contact, который у меня есть. Ниже приведены более подробные сведения.

// contact.graphql
type Contact {
    firstName: String
    lastName: String
    email: String!
    phoneNumber: String
}

// seller.graphql
# import Contact from './contact.graphql'
type Seller {
  sellerId: String!
  name: String
  image: String
  contact: Contact # Somehow not able to find Contact type
}

Примечание: contact.graphql и seller.graphql находятся в одном каталоге.

Ниже приведен код для импорта схемы.

const { importSchema } = require('graphql-import');

// Load GraphQL schema from files
const typeDefs = importSchema('./typedef/index.graphql');

При запуске сервера я получаю следующую ошибку. Понятия не имею, почему? Любая помощь будет оценена по достоинству.

/Users/****/workspace/my-project//node_modules/graphql/utilities/buildASTSchema.js:134
    throw new Error('Type "' + typeRef.name.value + '" not found in document.');
    ^

Error: Type "Contact" not found in document.
    at ASTDefinitionBuilder._resolveType (/Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:134:11)
    at ASTDefinitionBuilder.buildType (/Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:218:79)
    at ASTDefinitionBuilder._buildWrappedType (/Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:227:24)
    at ASTDefinitionBuilder.buildField (/Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:248:18)
    at /Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:302:21
    at /Users/****/workspace/my-project/node_modules/graphql/jsutils/keyValMap.js:28:31
    at Array.reduce (<anonymous>)
    at keyValMap (/Users/****/workspace/my-project/node_modules/graphql/jsutils/keyValMap.js:27:15)
    at ASTDefinitionBuilder._makeFieldDefMap (/Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:299:49)
    at fields (/Users/****/workspace/my-project/node_modules/graphql/utilities/buildASTSchema.js:284:23)

Работает ли, когда вы включаете контакт в тот же файл?

Enayat 27.04.2018 18:28

Это не. Это вызывает ту же ошибку. Это меня очень удивило.

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

Ответы 2

Попробуйте использовать # import Contact from 'contact.graphql'

Просмотрев свой большой список схем, я понял, что два файла graphql имеют то же имя схемы, что и Seller (в другом месте), что вызывает конфликт.

Изучение состоит в том, что даже мы можем организовать файлы graphql в другую логическую структуру каталогов, но мы должны сохранить уникальный type :-)

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