我遵循阿波罗联合会:实施服务指南
这里的代码:
import { ApolloServer, gql, IResolvers } from 'apollo-server';
import { buildFederatedSchema } from '@apollo/federation';
import faker from 'faker';
const MemoryDB = {
users: [
{ id: 1, name: faker.name.findName() },
{ id: 2, name: faker.name.findName() },
],
};
const typeDefs = gql`
type Query {
userById(id: ID!): User
}
type User @key(fields: "id") {
id: ID!
name: String!
}
`;
const resolvers: IResolvers = {
Query: {
me: (_, { id }, { db }) => {
return db.users.find((u) => u.id === +id);
},
},
User: {
__resolveReference(user, { db }) {
return db.users.find((u) => u.id === user.id);
},
},
};
const server = new ApolloServer({
schema: buildFederatedSchema([{ typeDefs, resolvers }]), // TSC throw error here
});
TSC抛出类型错误:
键入'IResolvers‘不能指定键入'GraphQLResolverMap’。索引签名不兼容。类型'(() => any) GraphQLScalarType IEnumResolver IEnumResolver IResolverObject \ IResolverOptions‘不能分配到键入'GraphQLScalarType \{ enumValue: string {enumValue: string收号;}{ fieldName: string: GraphQLFieldResolver { requires?:string?:string未定义;解析: GraphQLFieldResolver<...>;} }’。类型'() => any‘不能分配给键入'GraphQLScalarType { enumValue: enumValue: string \n;}{ fieldName: string: GraphQLFieldResolver { requires?:string { undefined;解析: GraphQLFieldResolver<...>;};}’。类型'() => any‘不能分配给以下类型:{ fieldName: string: GraphQLFieldResolver { argName: string: any;}>{ requires?:string未定义;解析: GraphQLFieldResolver any‘..ts(2322)中缺少索引签名
包版本:
"apollo-server": "^2.12.0",
"@apollo/federation": "^0.17.0",
看来IResolvers
接口是不兼容的,但是GraphQLResolverMap
接口没有公开,所以我不能导入和使用。我不想将解析器类型转换为any
类型。这是个虫子吗?
更新
在将apollo-server
更新为"apollo-server": "^2.15.1",
之后,问题仍然存在
发布于 2021-06-18 13:29:41
我相信GraphQLResolverMap在其他地方,试着:
import { GraphQLResolverMap } from 'apollo-graphql';
然后用它代替IResolvers。
https://stackoverflow.com/questions/62930094
复制相似问题