Ошибка: невозможно использовать GraphQLSchema «[объект GraphQLSchema]» из другого модуля или области - PullRequest
0 голосов
/ 04 октября 2018

Учитывая следующий код:

import { graphql } from 'graphql'
import graphqlTools from 'graphql-tools'

const { makeExecutableSchema } = graphqlTools

const typeDefs = `
type Query {
   as: [A]
}

type A {
   x: Int,
   y: Int
}
`
const schema = makeExecutableSchema ({ typeDefs })

graphql(schema, '{ as { x, y } }').then(console.log)

Я получаю эту ошибку:

Ошибка: невозможно использовать GraphQLSchema "[object GraphQLSchema]" из другого модуля или области.

Убедитесь, что в каталоге node_modules есть только один экземпляр "graphql".Если разные версии «graphql» являются зависимостями других задействованных модулей, используйте «Resolution», чтобы убедиться, что установлена ​​только одна версия.

Что происходит?

1 Ответ

0 голосов
/ 04 октября 2018

Это происходит потому, что модуль graphql-tools импортирует graphql из своего модуля CommonJS, в то время как мой код делает это из модуля ES.То есть каждый объект в моем собственном модуле происходит от модуля ES, а graph-tool - нет.

Решение

Это так же просто, как импортировать что-либо из graphql импорта модуля CommonJS, и оба объекта из graphql и graphql-tools смогут общаться друг с другом:

import graphql_ from 'graphql/index.js'
import graphqlTools from 'graphql-tools'

const { graphql } = graphql_
const { makeExecutableSchema } = graphqlTools

const typeDefs = `
type Query {
   as: [A]
}

type A {
   x: Int,
   y: Int
}
`
const schema = makeExecutableSchema ({ typeDefs })

graphql(schema, '{ as { x, y } }').then(console.log)
...