2

我有这样的:

//driverType.js
module.exports = new GraphQLObjectType({
  name: 'Driver',
  fields: () => ({
    homeTerminal: {
      type: TerminalType,
      resolve: resolver(User.HomeTerminal)
    }
  })
});

和这个:

//terminalType.js
module.exports = new GraphQLObjectType({
  name: 'Terminal',
  fields: () => ({
    drivers: {
      type: new GraphQLList(DriverType),
      resolve: resolver(Terminal.Drivers)
    }
  })
});

我得到错误:

错误:架构必须包含唯一的命名类型,但包含多个名为“驱动程序”的类型。

我发现一些帖子说将字段包装在功能块中可以解决问题,但正如您所见,我这样做了,但并没有什么不同。

应该支持稀薄的循环引用,是吗?我们可以让客户自己指定想要的深度。

我究竟做错了什么?

作为一种解决方法,我可以homeTerminal从 DriverType 中删除并使用原始字段将其展平,但这相当不雅。

4

1 回答 1

1

我发现了问题。在terminalType.js我有:

import DriverType from './DriverType';

应该:

import DriverType from './driverType';

小写“d”是正确的。

更新

这就是我认为正在发生的事情。Nodejs 缓存导入。所以多次导入同一个文件总是返回同一个实例。但是,我相信,虽然import区分大小写的缓存. 因此,在文件名上使用不同大小写调用会返回一个新的不同实例。

于 2016-06-16T04:50:33.130 回答