我正在使用Graph.Cool生成的模式,该模式具有实现两个接口的User类型:Node和AnonymousUser。这看起来像标准的多重继承。中继编译器拒绝这一点,但是如果我使用&符号它可以工作(实现Node& AnonymousUser vs. implements Node,AnonymousUser),我不知道为什么。任何人都有正确的语法背景,或者这听起来像一个错误?
编译器错误输出: $ relay-compiler --src ./src --schema ./env/schema.graphql错误: 加载架构时出错。期望架构是.graphql或.json 文件,描述您的GraphQL服务器的API。错误详情:
GraphQLError:语法错误:意外名称“AnonymousUser” at syntaxError(/Users/kieran/Git/integer.systems/node_modules/graphql/error/syntaxError.js:24:10) 出乎意料的(/Users/kieran/Git/integer.systems/node_modules/graphql/language/parser.js:1322:33) at parseDefinition(/Users/kieran/Git/integer.systems/node_modules/graphql/language/parser.js:152:9) at parseDocument(/Users/kieran/Git/integer.systems/node_modules/graphql/language/parser.js:110:22) 在解析(/Users/kieran/Git/integer.systems/node_modules/graphql/language/parser.js:38:10) at getSchema(/Users/kieran/Git/integer.systems/node_modules/relay-compiler/bin/relay-compiler:260:28) at /Users/kieran/Git/integer.systems/node_modules/relay-compiler/bin/relay-compiler:103:19 在Generator.next() 在步骤(/Users/kieran/Git/integer.systems/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30) at /Users/kieran/Git/integer.systems/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:13 at getSchema(/Users/kieran/Git/integer.systems/node_modules/relay-compiler/bin/relay-compiler:262:12) at /Users/kieran/Git/integer.systems/node_modules/relay-compiler/bin/relay-compiler:103:19 在Generator.next() 在步骤(/Users/kieran/Git/integer.systems/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30) at /Users/kieran/Git/integer.systems/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:13 在 at process._tickCallback(internal / process / next_tick.js:160:7)错误发生意外错误:“命令失败。退出代码:1
SCHEMA --------------------------------------------------
type User implements Node, AnonymousUser {
createdAt: DateTime!
email: String
id: ID!
isVerified: Boolean!
password: String
secret: String!
updatedAt: DateTime!
}
/* this works: type User implements Node **&** AnonymousUser { ... */
# An object with an ID
interface Node {
# The id of the object.
id: ID!
}
# It's an interface
interface AnonymousUser {
secret: String
isVerified: Boolean!
}
答案 0 :(得分:0)
可能是因为您的架构生成包使用了自己的过时graphql
子依赖关系,该子依赖关系以与您当前relay-compiler
不兼容的语法打印架构。
我不确定您是如何生成架构的。我正在使用get-graphql-schema
并在我的package.json
中添加以下内容为我解决了问题:
"resolutions": {
"get-graphql-schema/graphql": "^0.13.0"
}
如果您正在使用其他套餐,请将get-graphql-schema
替换为它。我们的想法是使用较新版本的graphql
来获取模式生成包。