Я хотел бы добавить версию для своих модулей, но я не знаю, как я могу это сделать. Я пытался создать общий module.ts, но одно и то же имя сервисов убило каждого из нас. Я пробовал разные module.ts для версий, это было лучше, но сервисы с одинаковыми именами не работали.
Это моя последняя структура:
тест-модуль
1.0
controllers
test.controller.ts
services
test.service.ts
test.module.ts
1.1
controllers
test.controller.ts
services
test.service.ts
test.module.ts
Это мои тестовые сервисы для версий:
import * as _ from 'lodash';
import { Injectable } from '@nestjs/common';
@Injectable()
export class TestService {
public test() {
return '1.0'; // and 1.1 in 1.1 directory
}
}
Это мой module.ts:
import { Module, Logger } from '@nestjs/common';
import { TestModule as DorotTwo } from 'test-module/1.1/test.module';
import { TestModule as DorotOne } from 'test-module/1.0/test.module'
@Module({
controllers: [ProtobufController],
providers: [],
imports: [
DorotTwo,
DorotOne,
],
})
export class ProjectModule {
constructor() {
Logger.log('App initialized');
}
}
Это простой тестовый контроллер в проекте, который хочет использовать модули. Испытанный импорт TestService из 1.0 или 1.1, но ответ тестовой функции всегда равен 1.0, потому что это последний элемент в импорте.
@Controller()
export class ProtobufController {
constructor(private readonly testService: TestService) {
console.log(this.testService.test()); // Always 1.0
}
.....
Это работает, если я использую полные разные имена для сервисов, например (например: UserAuthenticationService10, RegisterAuthenticationService10), но это ужасно, и если я забуду переименовать его в новой версии, он будет перезаписан.
Существует ли пример, где я могу прочитать, как я могу создать этот версионный модуль?