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)
    }
  })
});

エラーが発生します:

エラー: スキーマには一意の名前付きの型が含まれている必要がありますが、"Driver" という名前の型が複数含まれています。

関数ブロックでフィールドをラップすると解決するという投稿をいくつか見つけましたが、ご覧のとおり、私はそれを実行しましたが、違いはありませんでした。

薄い種類の循環参照をサポートする必要がありますね。クライアントに希望の深さを指定させることができます。

私は何を間違っていますか?

回避策として、homeTerminalDriverType から削除し、プリミティブ フィールドでフラット化することもできますが、それはかなり洗練されていません。

4

1 に答える 1

1

問題が見つかりました。私が持っていたterminalType.js

import DriverType from './DriverType';

次のようにする必要があります。

import DriverType from './driverType';

小文字の「d」が正しいです。

アップデート

これが私が起こっていると思うことです。Nodejs はインポートをキャッシュします。したがって、同じファイルを複数回インポートすると、常に同じインスタンスが返されます。ただし、大文字と小文字を区別しないimport一方で、キャッシング. そのため、ファイル名の大文字と小文字を区別して呼び出すと、新しい別のインスタンスが返されます。

于 2016-06-16T04:50:33.130 に答える