Inversify не работает должным образом с 2 разными классами
Я использую библиотеку Inversify в Typescript и у меня странное поведение.
У меня есть файл Inversify с этой конфигурацией:
import { SampleController } from 'sample.controller';
import { Sample2Controller } from 'sample2.controller';
import { Logger } from './log';
export const InversifyContainer = new Container();
InversifyContainer.bind<Logger>(Logger).toSelf().inSingletonScope();
InversifyContainer.bind<SampleController>(SampleController).toSelf();
InversifyContainer.bind<Sample2Controller>(OnOffDeviceController).toSelf();
Теперь я хотел бы использовать еще один статический класс из SampleController и SampleController, которые используют Logger.
import { SampleService } from 'services/sampleservice.service';
import { injectable } from 'inversify';
@injectable()
export class SampleController {
samplefunction(req, res, next) {
if (req.body) {
SampleService.samplefunction(req.body);
}
res.send({ status: 'ok' });
}
}
Этот код такой же для Sample2Controller, но вызывает другую службу SampleService2.
Образцы Сервисов - это то же самое изменение только конфигурации БД, больше ничего.
Примеры услуг:
import { InversifyContainer } from '../core/inversify';
import { Logger } from '../core/log';
export class ModbusTcpService {
static client;
static async connect(): Promise<void> {
.....
}
private static _logger = InversifyContainer.get<Logger>(Logger);
}
Все идет хорошо, но если я вызываю "private static _logger" в обоих файлах (SampleService и SampleService2), в Service2 выдается следующая ошибка:
SampleService._logger = inversify_1.InversifyContainer.get(log_1.Logger);
TypeError: Cannot read property 'get' of undefined
Если я удаляю "приватный статический _logger" из SampleService1 и копирую его в SampleService2, то работает регистратор SampleService2, если я позволяю им обоим, появляется одна и та же ошибка. Если я удаляю из Sample2 и копирую его из Sample2, снова работает и так одно.
Я не могу понять, почему это происходит.
Может кто-нибудь мне поможет?