Error: Apollo Server requires either an existing schema, modules or typeDefs
Error: Apollo Server requires either an existing schema, modules or typeDefs
我在一个使用 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);
但是我有同样的错误
将 apollo-server 更新为最低版本,并在创建 apollo 服务器时仅传递网关。
const server = new ApolloServer({
gateway
});
我在一个使用 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);
但是我有同样的错误
将 apollo-server 更新为最低版本,并在创建 apollo 服务器时仅传递网关。
const server = new ApolloServer({
gateway
});