如何解决NestJS中的UndefinedDependencyException异常?
解决NestJS启动时的UndefinedDependencyException错误
- 检查
FlowerService构造函数的第0位参数:该依赖未在FlowerModule的上下文中注册,先确认参数对应的类/提供者是否存在拼写错误。 - 确保依赖已加入
FlowerModule的providers数组:如果依赖是当前模块内的服务或自定义提供者,必须在模块的providers中声明。 - 处理跨模块依赖:如果依赖来自其他模块,需确保依赖所在模块已被
FlowerModule的imports数组导入,且该依赖在源模块的exports数组中导出。 - 排查循环依赖:若
FlowerService和第0位依赖存在循环引用,需使用forwardRef()来包装注入的依赖和模块注册。
示例代码
模块内依赖注册
// flower.module.ts import { Module } from '@nestjs/common'; import { FlowerService } from './flower.service'; import { TargetDependency } from './target-dependency'; // 第0位的依赖类 @Module({ providers: [FlowerService, TargetDependency], }) export class FlowerModule {}
跨模块依赖处理
// flower.module.ts import { Module } from '@nestjs/common'; import { FlowerService } from './flower.service'; import { SharedModule } from '../shared/shared.module'; @Module({ imports: [SharedModule], providers: [FlowerService], }) export class FlowerModule {} // shared.module.ts import { Module } from '@nestjs/common'; import { TargetDependency } from './target-dependency'; @Module({ providers: [TargetDependency], exports: [TargetDependency], }) export class SharedModule {}
内容的提问来源于stack exchange,提问作者Etienne Laurin
相关产品推荐
相关产品推荐

