中继编译器无法编译具有多重继承的Graph.Cool GraphQL模式

时间:2018-03-09 17:08:55

标签: relayjs

我正在使用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!
}

1 个答案:

答案 0 :(得分:0)

可能是因为您的架构生成包使用了自己的过时graphql子依赖关系,该子依赖关系以与您当前relay-compiler不兼容的语法打印架构。

我不确定您是如何生成架构的。我正在使用get-graphql-schema并在我的package.json中添加以下内容为我解决了问题:

"resolutions": { 
  "get-graphql-schema/graphql": "^0.13.0"
}

如果您正在使用其他套餐,请将get-graphql-schema替换为它。我们的想法是使用较新版本的graphql来获取模式生成包。