首页 > 解决方案 > 错误:无法使用来自另一个模块或领域的 GraphQLSchema“[object GraphQLSchema]”

问题描述

给定以下代码:

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”是其他依赖模块的依赖,使用“resolutions”确保只安装一个版本。

这是怎么回事?

标签: javascriptnode.jsecmascript-6graphqlgraphql-js

解决方案


graphql当您安装的模块版本与您安装和使用的版本不同时,也可能出现这种情况graphql-tools

我发现您可以通过以下任一方式纠正此问题:

  1. 更改graphql项目package.json文件中的版本以完全匹配graphql-tools其文件中依赖的内容package.json

  2. graphql作为依赖项删除并仅安装graphql-tools. 然后您将自动收到安装的任何graphql模块版本graphql-tools(只要您不依赖安装另一个冲突版本的任何其他软件包)。

在其他情况下,您可能拥有正确的版本,但可能会安装多次。您可以使用npm ls graphql查看所有已安装的版本。尝试运行npm dedupe以删除重复的安装。


推荐阅读