Федеративный шлюз Nestjs + Apollo GraphQL не может анализировать сервисы из-за «неверного запроса», доступен воспроизводимый репозиторий git.
В монорепозитории NX я создаю 3 приложения NestJS, + иgateway
для начала. Все они работают на платформе Apollo Graphql и следуют официальной документации NestJS.
Проблема, с которой я сталкиваюсь, заключается в том, что с обоимиuser-service
иauth-service
и успешно обрабатывая запросы как отдельные серверы, в то же время шлюз выдает
Couldn't load service definitions for "auth" at http://localhost:3100/apis/auth-service/graphql: 400: Bad Request
Сами службы представляют собой стандартные графические приложения, ничего базового.
Определения шлюза следующие:
{
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'),
},
],
}),
}
}
Я создал монорепозиторий на основе nx, который позволяет вам легко воспроизвести эту проблему, запустив все 3 сервера в режиме наблюдения одновременно, на локальном хосте, на разных портах.
Все нарисовано как надо. Ссылка: https://github.com/sebastiangug/nestjs-federation.git
README содержит две команды, необходимые для его запуска, а также тот же набор инструкций, а также запросы проверки работоспособности, доступные для каждой службы.
Используемые версии:
"@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",
Любые идеи, что я делаю неправильно здесь или какая дополнительная конфигурация необходима для этого?
Спасибо