将Apollo Server v4与NestJS集成时遇模块缺失问题求助
解决方案
升级兼容的NestJS GraphQL依赖
@nestjs/graphql 10.x及以上版本才适配新版@apollo/server,先执行以下命令安装最新兼容包:npm install @nestjs/graphql@latest @nestjs/apollo@latest @apollo/server graphql替换旧的导入路径
代码中如果直接从apollo-server-core导入插件或工具类,需要改成从@apollo/server的子路径导入。比如:
旧导入:import { ApolloServerPluginLandingPageLocalDefault } from 'apollo-server-core';新导入:
import { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default';清理依赖并重新安装
清理npm缓存,删除旧依赖文件后重新安装,避免缓存导致的解析问题:npm cache clean --force rm -rf node_modules package-lock.json npm install调整GraphQL模块配置
确保使用ApolloDriver而非旧的驱动,并按新版格式配置Apollo选项,示例:import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'; import { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default'; @Module({ imports: [ GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, autoSchemaFile: true, plugins: [ApolloServerPluginLandingPageLocalDefault()], }), ], }) export class AppModule {}
内容的提问来源于stack exchange,提问作者Bikrant
相关产品推荐
相关产品推荐

