Javascript Nest.js:如何覆盖导入模块中的提供程序? 代码示例 第三方图书馆 @Module({ providers: [AService] exports: [AService] }) export class AModule { } @Module({ imports: [AModule], providers: [BService] exports: [BService] }) export class BModule { } 我的代码 问题:

Javascript Nest.js:如何覆盖导入模块中的提供程序? 代码示例 第三方图书馆 @Module({ providers: [AService] exports: [AService] }) export class AModule { } @Module({ imports: [AModule], providers: [BService] exports: [BService] }) export class BModule { } 我的代码 问题:,javascript,node.js,dependency-injection,nestjs,Javascript,Node.js,Dependency Injection,Nestjs,如何从代码中重写/替换a服务提供程序?(无需第三方库修补)根据我的评论,以下是如何使用动态提供程序制作动态模块 @Module({ providers: [AService] exports: [AService] }) export class AModule { } @Module({ imports: [AModule], providers: [BService] exports: [BService] }) export class BModu

如何从代码中重写/替换
a服务
提供程序?(无需第三方库修补)

根据我的评论,以下是如何使用动态提供程序制作动态模块

@Module({
    providers: [AService]
    exports: [AService]
})
export class AModule {
}

@Module({
    imports: [AModule],
    providers: [BService]
    exports: [BService]
})
export class BModule {
}

导出接口ProviderInterface{
句柄():void;
}
@可注射()
类处理提供程序{
构造函数(@Inject('MY_DYNAMIC_PROVIDER')私有只读dynamicProvider:ProviderInterface){}
句柄():void{
this.dynamicProvider.handle();
}
}
@模块({})
导出类模块{
公共静态根目录(提供程序:ProviderInstance):DynamicModule{
返回{
模块:AModule,
供应商:[
{
提供:'MY_DYNAMIC_PROVIDER',
useClass:提供者,
},
一些处理提供者,
],
};
}
}
那么你可以这样用


类GenericDynamicProviderExample实现ProviderInterface{
句柄():void{
log('hello');
}
}
@模块({
进口:[
AModule.forRoot(GenericDynamicProviderExample),
],
})
导出类BModule{}

首先,您为什么要这样做?我建议您将模块设置为动态的,并接受您可以使用的特定实例的提供者