NestJS混合应用:微服务集成WebSocket网关依赖注入报错解决
NestJS混合应用WebSocket网关依赖解析失败问题解决
问题场景
开发NestJS混合应用时,需同时启动监听消息队列的微服务,以及与前端客户端通信的WebSocket服务器。尝试将WebSocket网关注入微服务后,出现Nest无法解析网关依赖的错误。
错误日志
ERROR [ExceptionHandler] Nest can't resolve dependencies of the ResultsController (ResultsService, ?). Please make sure that the argument UsersGateway at index [1] is available in the ResultsModule context.
代码结构
main.js:创建AppModule并连接RMQ微服务,启动后监听82端口app.module.ts:导入UsersModule和ResultsModuleresults.module.ts:导入UsersModule,包含ResultsController、ResultsServiceusers.module.ts:包含UsersGateway和UsersServiceusers.gate.ts:实现WebSocket网关核心逻辑
无效尝试操作
- 调整模块导入顺序
- 取消网关的模块包裹
- 从AppModule中移除ResultsModule
解决方案
问题核心是UsersModule未对外导出UsersGateway,导致依赖它的ResultsModule无法在自身上下文获取该网关实例。只需在UsersModule的exports数组中添加UsersGateway即可解决:
// users.module.ts @Module({ providers: [UsersGateway, UsersService], exports: [UsersGateway] // 新增网关导出配置 }) export class UsersModule {}
内容的提问来源于stack exchange,提问作者Max van Hattum
相关产品推荐
相关产品推荐

