0

さまざまな場所 (ローカル アプリと共通モジュール) から graphql スキーマを読み込みたい。そうです:

export function GraphqlServer(
    resolvers: Record<string, IResolvers>,
    config?: Config
) {
    const localScheme = '**/*.graphql';
    const commonSchema = join(
        __dirname,
        './packages/common/src/graphql/api/**/*.graphql'
    );
    const schema = loadSchemaSync([localScheme, commonSchema], {
        loaders: [new GraphQLFileLoader()]
    });

    const schemaWithResolvers = addResolversToSchema({
        schema,
        resolvers: {
            ...resolvers,
            Date,
            DateTime,
            JSON
        }
    });

しかし、最初の場所のスキーマのみがロードされているようです。エラーが発生する

エラー: 不明なタイプ "GetExternalConfluencePage"。

これは、2 番目の場所にある .graphql ファイルで定義されています。このファイルを 2 番目の場所から最初の場所に移動すると、機能します。

.graphql ファイルの内容は次のとおりです。

input GetExternalConfluencePage {
    confluencePageId: String!
}

type ExternalConfluencePage {
    title: String!
    body: String!
}

最初の場所にある .graphql ファイルには以下が含まれます。

type Query {
    macro(input: GetMacroInput!): Macro!
    externalConfluencePage(
        input: GetExternalConfluencePage!
    ): ExternalConfluencePage
}

何が問題なのかヒントはありますか?

4

1 に答える 1

1

それはうまく動作します。

例えば

index.ts

import { printSchema } from 'graphql';
import { loadSchemaSync, GraphQLFileLoader } from 'graphql-tools';
import { join } from 'path';

const localScheme = join(__dirname, './local.graphql');
const commonSchema = join(__dirname, './common/*.graphql');
const schema = loadSchemaSync([localScheme, commonSchema], {
  loaders: [new GraphQLFileLoader()],
});

console.log(printSchema(schema));

common/common.graphql:

input GetExternalConfluencePage {
  confluencePageId: String!
}

type ExternalConfluencePage {
  title: String!
  body: String!
}

local.graphql:

type Query {
  externalConfluencePage(input: GetExternalConfluencePage!): ExternalConfluencePage
}

ロードされた GraphQL スキーマをコンソールに出力します。

input GetExternalConfluencePage {
  confluencePageId: String!
}

type ExternalConfluencePage {
  title: String!
  body: String!
}

type Query {
  externalConfluencePage(input: GetExternalConfluencePage!): ExternalConfluencePage
}

パッケージのバージョン:

"graphql": "^15.4.0",
"graphql-tools": "^6.2.3",
于 2021-01-05T10:04:02.033 に答える