apollo 网关仅支持 HTTP(S) 协议

Nia*_*all 5 node.js graphql apollo-server node-fetch apollo-federation

我正在尝试使用 apollo 托管解决方案中的托管配置在本地运行 apollo 网关。它加载架构并且一切都很好,但是当我在 Playground 中尝试查询时,我得到“仅支持 HTTP(S) 协议”。我知道我可以使用 serviceList,但我希望能够使用 apollo 图管理器在 POC 本地运行它。这似乎是阿波罗使用的节点获取的问题,因为它甚至没有调用底层数据源并且在网关处失败。

在此输入图像描述

/* istanbul ignore file */
import {ApolloServer} from 'apollo-server';

import {ApolloGateway} from '@apollo/gateway';

 const {
   NODE_ENV,
 } = process.env;


 const gateway: ApolloGateway = new ApolloGateway();

 const main = async () => {
    return new ApolloServer({
        gateway,
        playground: NODE_ENV !== 'production',
        subscriptions: false,
 });
}

export default main;
Run Code Online (Sandbox Code Playgroud)

我在网上到处搜索,似乎找不到答案,所以任何帮助将不胜感激。有什么想法如何让它在本地工作吗?提前致谢。

B-S*_*art 0

这很可能是您为此 cms 服务定义的端点字符串存在问题。

如果您设置查询“www.example.com/api”的数据加载器,它将抛出此错误,您需要将其设置为“https://www.example.com/api”或“http://www .example.com/api”。

看看你的加载器是如何定义的以及主机名是在哪里定义的,我敢打赌你会发现它前面没有任何 http 协议。

来源:我自己刚刚处理过这个问题。