You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行relay-compiler报错:Query类型存在未知字段`edges`

嘿,我之前用graphene-django配合relay-compiler的时候也踩过不少坑,结合你给出的Schema代码片段,大概率是几个relay规范相关的配置没做到位,咱们一步步来排查解决:

排查relay-compiler与graphene-django兼容问题

Relay编译器对GraphQL Schema有严格的规范要求,而graphene-django需要完全贴合这些规范才能让编译流程正常运行。从你提供的代码来看,主要可以从以下几个方向检查:

1. 补全Query类的relay风格字段

你的Query类只写了def...,大概率是缺少了relay必须的核心查询字段。Relay要求查询根必须包含node字段(用于通过Relay ID获取单个节点),以及符合Connection规范的列表字段。正确的写法应该是:

from graphene import ObjectType
import graphene
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from .models import Tree

class TreeNode(DjangoObjectType):
    class Meta:
        model = Tree
        filter_fields = ['owner']
        interfaces = (graphene.relay.Node,)  # 注意这里要导入graphene下的relay.Node,不是直接的relay模块

class Query(ObjectType):
    # 必须定义这个node字段,Relay编译器依赖它生成类型定义
    node = graphene.relay.Node.Field()
    # 用ConnectionField暴露列表,符合Relay的分页规范
    trees = DjangoFilterConnectionField(TreeNode)

# 务必导出完整的Schema实例
schema = graphene.Schema(query=Query)

2. 确保Relay编译器能正确获取Schema

Relay-compiler需要读取标准的GraphQL Schema文件(.graphql)或者直接从运行中的GraphQL端点拉取Schema。如果用本地文件,你需要先把graphene-django的Schema导出成.graphql格式:
可以用Django的自定义命令导出:

python manage.py graphql_schema --schema grove.gql_schema.schema --out schema.graphql

然后在项目根目录的relay.config.js中配置路径:

module.exports = {
  src: "./src",
  schema: "./schema.graphql",
  exclude: ["**/node_modules/**", "**/__generated__/**"],
};

3. 检查模型ID的兼容性

graphene-django的relay.Node接口会自动把模型主键编码成Relay标准的base64格式ID,但要确保你的Tree模型有合法的主键字段(默认的自增id就可以),如果是自定义主键,要保证它能被正常序列化为字符串。

4. 版本兼容性排查

不同版本的relay-compiler和graphene-django可能存在兼容性冲突,建议使用最新稳定版:

# 更新graphene-django
pip install --upgrade graphene-django
# 更新relay-compiler
npm install --save-dev relay-compiler@latest

如果还是有报错,把具体的错误信息贴出来能更精准定位问题,但从目前的代码片段来看,以上几点是最可能的触发原因。

内容的提问来源于stack exchange,提问作者saturdayplace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:35