#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