升级Graphene v3.4.3遇TypeError:期望为GraphQL schema
解决Graphene v3.4.3中
TypeError: Expected <Schema instance> to be a GraphQL schema问题 错误根源
你调用的graphql.type.validate_schema是graphql-core原生库的验证函数,它仅接受graphql-core自身定义的graphql.type.Schema实例。而graphene.Schema是Graphene框架对原生Schema的封装类,二者类型不匹配,因此触发类型校验错误。
可行解决方案
1. 传递Graphene Schema内部的原生Schema对象
Graphene的Schema实例内置了原生graphql-core的Schema对象,可通过_schema属性获取后传入验证函数:
>>> class Query(graphene.ObjectType): ... name = graphene.String() ... >>> import graphql >>> new_schema = graphene.Schema(query=Query) >>> # 传入原生Schema对象进行验证 >>> graphql.type.validate_schema(new_schema._schema)
2. 依赖Graphene内置的Schema校验
Graphene在创建Schema实例时已经自动完成了基础的Schema合法性校验,若无特殊自定义验证需求,无需手动调用graphql-core的验证函数。
3. 锁定兼容的依赖版本
当前你的依赖版本(Graphene 3.4.3 + graphql-core 3.2.5)是兼容的,但如果后续出现其他版本问题,可在Pipfile中明确锁定版本:
[packages] graphene = "==3.4.3" graphql-core = "==3.2.5" [requires] python_version = "3.10"
执行pipenv install重新同步依赖即可。
内容的提问来源于stack exchange,提问作者user28859128
相关产品推荐
相关产品推荐

