nestjs + apollo graphql federated gateway can't introspect services because of "bad request", reproducible git repository available
Asked Answered
L

0

7

In an NX monorepo I'm building 3 nestjs application, an auth-service + user-service and a gateway to start off with. They're all powered by apollo graphql and following the official nestjs documentation.

The issue that I'm having is that with both the user-service and auth-service up and processing requests successfully as individual servers, at the same time, the gateway throws

 Couldn't load service definitions for "auth" at http://localhost:3100/apis/auth-service/graphql: 400: Bad Request

The services themselves are standard graphql applications, nothing basic.

The definitions for the gateway are as such:

{
server: {
          debug: true,
          playground: true,
          autoSchemaFile: './apps/gateway/schema.gql',
          sortSchema: true,
          introspection: true,
          cors: ['*'],
          path: '/apis/gateway/graphql';
        },
gateway: {
            supergraphSdl: new IntrospectAndCompose({
              subgraphHealthCheck: true,
              subgraphs: [
                {
                  name: 'user',
                  url: resolveSubgraphUrl('user'),
                },
                {
                  name: 'auth',
                  url: resolveSubgraphUrl('auth'),
                },
              ],
            }),
          }
}

I have created an nx based monorepository that allows you to reproduce this issue easily, by spinning up all 3 servers in watch mode at the same time, on localhost, on different ports.

Everything is mapped as it should. Link: https://github.com/sebastiangug/nestjs-federation.git

The README contains the two commands necessary to run it as well as the same set of instructions plus the health-checks queries available from each service.

Versions used:

    "@apollo/subgraph": "2.1.3",
    "@apollo/federation": "0.37.1",
    "@apollo/gateway": "2.1.3",
    "apollo-server-express": "3.6.7",
    "graphql": "16.5.0",
    "@nestjs/graphql": "10.1.3",
    "@nestjs/platform-express": "9.0.8",

Any ideas what I'm doing wrong here or what further configuration is necessary to achieve this?

Thank you

Laquitalar answered 12/10, 2022 at 14:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.