当使用 Apollo 管理联合架构时,如果 Fetch schema 失败,您可以尝试以下步骤来解决此问题:
确认所有子服务的 schema 都已正确发布,并且可以在相应的 API 端点上访问。
确保在 Gateway 节点上使用的子服务的地址和端口是正确的。
在 Gateway 配置中设置 Federation 选项时,确保所有子服务的服务名都正确,并匹配 schema 中的对应值。例如:
const { ApolloServer } = require('apollo-server');
const { ApolloGateway } = require('@apollo/gateway');
const gateway = new ApolloGateway({
serviceList: [
{ name: 'accounts', url: 'http://localhost:4001/graphql' },
{ name: 'inventory', url: 'http://localhost:4002/graphql' },
],
});
const server = new ApolloServer({
gateway,
subscriptions: false,
});
server.listen().then(({ url }) => {
console.log(`� Gateway ready at ${url}`);
});
在上述示例中,“name”字段应该与相应子服务的服务名相同。