Хорошо, поэтому, когда nest создает свой контейнер, создается экземпляр каждого класса, а прототип класса используется в качестве символа для уникальной идентификации модуля. Модули в nestjs не совпадают с модулями экспорта в ES6 MJS. Итак, что вы делаете здесь:
@Module({
providers: [TestProvider],
})
export class ModuleA {}
@Module({})
export class ModuleA {}
const dummyContainer = {
[ModuleA.constructor.name] = new ModuleA(),
[ModuleA.constructor.name] = new ModuleA(),
};
Однако, в другом ответе, который я сделал, вы могли бы снова использовать DynamicModule
для изменения значения ключа в приведенном выше примере, например,
@Module({})
export class ModuleA {
public static forRoot(): DynamicModule {
return {
module: 'UNIQUE_IDENTIFIER',
providers: [TestProvider],
};
}
}
@Module({})
export class ModuleA{}
Теперь при использовании приведенного выше примера, например,
import {ModuleA as ModuleB} from './for-root-example';
import {ModuleA} from './moduleA';
@Module({
imports: [
ModuleA,
ModuleB.forRoot(),
],
})
ModuleA в качестве MobuleB должен иметь ключ уникального идентификатора для модуля при импорте и, следовательно, может иметь то же имя класса. Честно говоря, я бы не стал этого рекомендовать.