'REQUEST'对象在NestJS动态模块中始终未定义

问题描述 投票:1回答:1

我创建了一些动态模块(log.module.ts)

@Global()
@Module({})
export class LoggerModule {
 public static forRoot(options: WinstonModuleOptions = null):  DynamicModule {

 const providers = createWinstonProviders(options);
 return {
   module: LoggerModule,
   providers: providers,
   exports: providers,
  };
 }
}

和provider(log.provider.ts)

export function createWinstonProviders(loggerOpts:WinstonModuleOptions): Provider[] {
   return [
   {
    provide: 'logger',
    useFactory: () => new LoggerService(loggerOpts),
    scope: Scope.TRANSIENT
   }];
}

我的问题是,在'LoggerServie'上,我尝试像在documantion中那样获取'REQUEST'对象:https://docs.nestjs.com/fundamentals/injection-scopes,但总是得到undefined ..(log.service.ts)

@Injectable({ scope: Scope.REQUEST })
export class LoggerService {
 private readonly logger: any;
 constructor(loggerOpts: WinstonModuleOptions = null, 
 @Inject(REQUEST) private readonly request?: Request) {
 this.logger = createLogger({});
 }

  test(message) {
   console.log(this.request)-----> undefined!
   return "test";
  }
}

我的情况不同于文档,因为我使用new关键字初始化我的服务,并在'useFactory'上将其返回...

感谢您的帮助!

dependency-injection nestjs
1个回答
0
投票

所以,对于任何人,都有类似的问题:问题在于'winston'选项实现。

© www.soinside.com 2019 - 2024. All rights reserved.