NestJS项目升级apollo-server-plugin-base到v3.2后出现TypeScript报错
错误原因
apollo-server-plugin-base v3版本对插件钩子的类型签名做了不兼容升级,所有钩子强制要求异步返回,你当前使用的还是v2版本的同步写法,不符合新的接口定义。
修复方案
需要针对两个报错点分别调整类型签名:
- 修复
requestDidStart报错:
- 方法必须接收
GraphQLRequestContext类型的入参(不需要用到上下文内容的话可以只声明不使用) - 给方法加上
async关键字,让返回值自动包装为Promise类型,匹配接口要求
- 修复
willSendResponse报错:
- 给
willSendResponse方法加上async关键字,让返回值变为Promise<void>,符合类型约束
修复后完整代码
import { Plugin } from '@nestjs/graphql' import { ApolloServerPlugin, GraphQLRequestListener, GraphQLRequestContext } from 'apollo-server-plugin-base' @Plugin() export class LoggingPlugin implements ApolloServerPlugin { async requestDidStart(requestContext: GraphQLRequestContext): Promise<GraphQLRequestListener> { console.log('Request started') return { async willSendResponse() { console.log('Will send response') } } } }
如果不需要用到请求上下文参数,也可以省略参数的类型声明,只保留async关键字即可正常运行。
内容的提问来源于stack exchange,提问作者user3142695
相关产品推荐
相关产品推荐

