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, снова работает и так одно.

Я не могу понять, почему это происходит.

Может кто-нибудь мне поможет?

0 ответов

Другие вопросы по тегам