错误:无法从其他模块或领域使用GraphQLSchema“[object GraphQLSchema]”

问题描述 投票:1回答:1

给出以下代码:

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”来确保只安装一个版本。

这是怎么回事?

javascript node.js ecmascript-6 graphql graphql-js
1个回答
2
投票

发生这种情况是因为graphql-tools模块从其CommonJS模块导入graphql,而我的代码从ES模块执行。也就是说,我自己模块中的每个对象都来自ES模块,而graph-tool则不是。

它就像导入CommonJS模块的graphql导入任何东西一样简单,graphqlgraphql-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)
© www.soinside.com 2019 - 2024. All rights reserved.