Как мне исправить эту ошибку машинописного текста и графа? - PullRequest
0 голосов
/ 16 июня 2020

В моем индексном файле я пытаюсь собрать все свои определения типов и преобразователи в GraphQLSchema[] с помощью методов makeExicutableSchema и buildSchema инструментов graphql, чтобы затем поместить их в GraphQLServer из graphql-yoga.

import { importSchema } from "graphql-import";
import { GraphQLServer } from 'graphql-yoga';
import * as path from 'path';
import * as fs from 'fs';
import { createTypeOrmConnection } from "./utils/createTypeOrmConn";
import { mergeSchemas, makeExecutableSchema } from "graphql-tools";
import { GraphQLSchema } from 'graphql';

export const startServer = async () => {
  const schemas: GraphQLSchema[] = [];
  const folders = fs.readdirSync(path.join(__dirname, "./modules"));
  folders.forEach(folder => {
    const { resolvers } = require(`./modules/${folder}/resolvers`);
    const typeDefs = importSchema(
      path.join(__dirname, `./modules/${folder}/schema.graphql`)
    );
    schemas.push(makeExecutableSchema({
      resolvers,
      typeDefs
    }));
  });

  const server = new GraphQLServer({
    schema: mergeSchemas({ schemas })
  });
  await createTypeOrmConnection();
  const app = await server.start({port: process.env.NODE_ENV === "test" ? 0 : 4000})
  console.log('Server is running on http://localhost:4000')

  return app;
};

А вот ошибка по адресу schema: mergeSchema({ schemas }):

Type 'import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/graphql/type/schema").GraphQLSchema' is not assignable to type 'import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/apollo-utilities/node_modules/graphql/type/schema").GraphQLSchema'.
  The types returned by 'getQueryType()' are incompatible between these types.
    Type 'Maybe<GraphQLObjectType<any, any>>' is not assignable to type 'Maybe<GraphQLObjectType<any, any, { [key: string]: any; }>>'.
      Type 'GraphQLObjectType<any, any>' is not assignable to type 'Maybe<GraphQLObjectType<any, any, { [key: string]: any; }>>'.
        Types of property 'isTypeOf' are incompatible.
          Type 'import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/graphql/jsutils/Maybe").Maybe<import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/graphql/type/definition").GraphQLIsTypeOfFn<any, any>>' is not assignable to type 'import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/apollo-utilities/node_modules/graphql/tsutils/Maybe").default<import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/apollo-utilities/node_modules/graphql/type/definition").GraphQLIsTypeOfFn<any, any>>'.
            Type 'GraphQLIsTypeOfFn<any, any>' is not assignable to type 'Maybe<GraphQLIsTypeOfFn<any, any>>'.
              Types of parameters 'info' and 'info' are incompatible.
                Property 'cacheControl' is missing in type 'import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/apollo-utilities/node_modules/graphql/type/definition").GraphQLResolveInfo' but required in type 'import("/Users/jackrisse/Projects/project-da-league/backend/node_modules/graphql/type/definition").GraphQLResolveInfo'.

1 Ответ

0 голосов
/ 17 июня 2020

Я нашел способ обойти это, назначив схему типу любого const schema: any = mergeSchemas({ schema });

...