Inverseify无法与2个差异类一起正常工作

时间:2018-07-09 10:32:15

标签: typescript inversifyjs

我在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();

现在,我想使用来自使用Logger的SampleController和SampleController中的另一个静态类。

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);
}

一切正常,但是如果我在两个文件(SampleService和SampleService2)中都调用“ private static _logger”,则Service2中会出现此错误:

SampleService._logger = inversify_1.InversifyContainer.get(log_1.Logger);

TypeError: Cannot read property 'get' of undefined

如果我从SampleService1中删除“ private static _logger”,然后将其复制到SampleService2中,则SampleService2记录器将起作用,如果同时允许它们,则会出现相同的错误。如果我从Sample2中删除并从Sample2中复制它,那么它又可以正常工作了。

我不知道为什么会发生这种行为。

有人可以帮助我吗?

0 个答案:

没有答案