升级NestJs Apollo至Server v4后'cors'类型错误的解决咨询
解决NestJs-Apollo升级后CORS配置类型错误问题
升级NestJs-Apollo项目后,出现类型错误:'cors'不存在于类型'Omit'中,该问题源于Apollo Server v4的配置结构变更,需调整CORS配置方式适配Express服务器。
原错误代码片段
// ... 其他导入 @Module({ imports: [ GraphQLModule.forRoot<ApolloGatewayDriverConfig>({ driver: ApolloGatewayDriver, server: { cors: true, // 此处触发类型错误 }, // ... 其他配置项 }), ], }) export class MyAppComponent {}
解决方案
Apollo Server v4不再支持cors: true这种布尔值写法,需传入具体的CORS配置对象,示例如下:
import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { ApolloGatewayDriver, ApolloGatewayDriverConfig } from '@nestjs/apollo'; @Module({ imports: [ GraphQLModule.forRoot<ApolloGatewayDriverConfig>({ driver: ApolloGatewayDriver, server: { cors: { credentials: true, // 允许携带凭证 origin: true, // 允许所有来源(生产环境建议指定具体域名) }, }, // 其他配置项 }), ], }) export class YourAppModule {}
说明
Apollo Server v4重构了配置类型,server.cors字段仅接受符合Express CORS规范的配置对象,不能再使用布尔值。你可以根据实际需求调整origin(比如指定['https://your-domain.com'])、methods等参数,实现更精细的跨域控制。
内容的提问来源于stack exchange,提问作者pronixpriv
相关产品推荐
相关产品推荐

