Сервер ApolloServer, использующий схемы слияния, Ошибка: серверу Apollo Server требуется либо существующая схема, модули или определения типов

#graphql #apollo-server #graphql-tools

#graphql #apollo-server #graphql-инструменты

Вопрос:

Я думаю, что я просто неправильно использую этот модуль, и это причина, по которой я получаю сообщение об ошибке. Согласно документации, я могу передать массив преобразователей и схем в mergeSchemas функцию из graphql-tools . Но я получаю эту ошибку:

Error: Apollo Server requires either an existing schema, modules or typeDefs

Вот код:

app.js

 import { ApolloServer } from 'apollo-server'
import schema from './modules'

const server = new ApolloServer({
    schema
})

server.listen().then(({ url }) => {
    console.log(`🚀 Server ready at ${url}`)
})
  

Схемы слияния

 import { mergeSchemas } from 'graphql-tools'

import bookSchema from './book/schema/book.gql'
import bookResolver from './book/resolvers/book'

export const schema = mergeSchemas({
    schemas: [bookSchema],
    resolvers: [bookResolver] // ==> Maybe I have to merge these before hand?
})
  

Схема

 type Query {
    book(id: String!): Book
    bookList: [Book]
}

type Book {
    id: String
    name: String
    genre: String
}
  

Распознаватель

 export default {
    Query: {
        book: (parent, args, context, info) => {
            console.log(parent, args, context, info)
            return {
                id: `1`,
                name: `name`,
                genre: `scary`
            }
        },
        bookList: (parent, args, context, info) => {
            console.log(parent, args, context, info)
            return [
                { id: `1`, name: `name`, genre: `scary` },
                { id: `2`, name: `name`, genre: `scary` }
            ]
        }
    }
}
  

Ответ №1:

Глупая ошибка:

Необходимо импортировать объект схемы после его деструктурирования:

import { schema } from './modules'

Ответ №2:

В моем сценарии я получал вышеуказанную ошибку, когда передавал аргумент, подобный приведенному ниже.

 const server = new ApolloServer(typeDefs, resolvers);
  

затем это изменилось на

 const server = new ApolloServer({typeDefs, resolvers});
  

ошибка, приведенная ниже, увеличилась.

Ошибка: серверу Apollo требуется либо существующая схема, модули, либо typeDefs