nestjs依赖注入失败的问题
发布于 7 年前 作者 PanZhangOne 3535 次浏览 来自 问答

在使用nestjs的时候遇到无法实现依赖注入的问题。

使用中文文档的ModuleRef方式来实现authServiceuserService的依赖注入,但是报"Cannot read property 'check' of null"错误。

以下是部分代码。

auth.module.ts

@Module({
    imports: [TypeOrmModule.forFeature([AuthEntity])],
    components: [AuthService],
    exports: [AuthService],
})
export class AuthModule{}

user.service.ts

@Component()
export class UserService implements OnModuleInit {
    private authService: AuthService;

    constructor(@InjectRepository(UserEntity)
                private readonly userRepository: Repository<UserEntity>,
                private readonly moduleRef: ModuleRef) {
    }
	
    async test(user: UserEntity): Promise<UserEntity> {
	// "Cannot read property 'check' of null"
		const is = await this.authService.check(user);
    }
    onModuleInit() {
        this.authService = this.moduleRef.get<AuthService>(AuthService);
    }
}

版本信息

"@nestjs/common": "^4.5.9",
"@nestjs/core": "^4.5.10",
2 回复

moduleRef 只能是自己 modulecomponents 里面找

 class {
      public readonly components = components;

      public get<T>(type: OpaqueToken): T {
        const name = isFunction(type) ? (type as Metatype<any>).name : type;
        const exists = this.components.has(name);

        return exists ? (this.components.get(name).instance as T) : null;
      }
    };

而且你没初始化过 怎么用

@5196666qwe 所噶,非常感谢,但是老哥,不是很懂这段代码啊

回到顶部