错误:Apollo Server 需要现有的模式、模块或 typeDefs
Posted
技术标签:
【中文标题】错误:Apollo Server 需要现有的模式、模块或 typeDefs【英文标题】:Error: Apollo Server requires either an existing schema, modules or typeDefs 【发布时间】:2020-05-14 20:55:58 【问题描述】:我有我想测试的这个功能,在一个使用 Apollo Server 的联合网关实现的 nodeJS 项目中。
@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();
);
);
但是当我测试这个函数时我有这个错误:
Error: Apollo Server requires either an existing schema, modules or typeDefs
我很乐意在 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);
但我有同样的错误
【问题讨论】:
【参考方案1】:将 apollo-server 更新到最低版本,创建 apollo 服务器时只通过网关。
const server = new ApolloServer(
gateway
);
【讨论】:
以上是关于错误:Apollo Server 需要现有的模式、模块或 typeDefs的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apollo Graphql Server 解析关系文档
流星导入错误:createApolloServer 不是函数