我在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中复制它,那么它又可以正常工作了。
我不知道为什么会发生这种行为。
有人可以帮助我吗?