Búsqueda de sitios web

node.js - Error: Apollo Server requiere ya sea un esquema existente, módulos o typeDefs


Tengo esta función que quiero probar, en un proyecto de NodeJS que utiliza la implementación de puerta de enlace federada de Apollo Server.

@Service()
export class Server {


    constructor();
    }

    async startAsync(): Promise<void> {
        await this.createApolloGateway();
    }

    private async createApolloGateway(): Promise<void> {

        const gateway = new ApolloGateway({
                serviceList: [{ name: 'products', url: 'https://products-service.dev/graphql' },
                { name: 'reviews', url: 'https://reviews-service.dev/graphql' }]});


        const {schema, executor} = await gateway.load();
        const server = new ApolloServer({schema, executor});

        return new Promise((resolve, _) => {
            server.listen(8080).then(({url}) => {
                resolve();
            });
        });
    }

}

pero cuando pruebo esta función tengo este error:

Error: Apollo Server requires either an existing schema, modules or typeDefs

He intentado simular el esquema haciendo esto en el framework jest

 apolloGateway = createMockInstance(ApolloGateway);

 it('should start an http server', async () => {
        // Arrange

        const server = new Server(configurationService, loggerService);

        const schema = `
  type User {
    id: ID!
    name: String
    lists: [List]
  }

  type RootQuery {
    user(id: ID): User
  }
  schema {
    query: RootQuery
  }
`;

         apolloGateway.load = jest.fn().mockReturnValue(schema);




        // Act
        await server.startAsync();

        // Assert
        await expect(server).not.toBeNull;
    }, 30000);

pero tengo el mismo error

Respuesta #1

Actualiza el apollo-server a la versión mínima y pasa solo el gateway al crear el servidor apollo.

const server = new ApolloServer({
  gateway  
}); 

Artículos relacionados