如何在 NestJS 中实现 OnApplicationShutdown 接口的 class 中使用服务
How to use Service in a class that implements OnApplicationShutdown interface in NestJS
我尝试使用的服务来自外部库,该库本身定义了一个全局字段,我在不同的模块中使用它。
我试图在构造函数中注入服务,但调用时其值为 undefined
。
shutdown.hook.ts的内容:
export class AppShutdownHook implements OnApplicationShutdown {
constructor(
private fooService: FooService
) {}
async onApplicationShutdown(signal: string) {
if (signal === "SIGTERM") {
this.fooService.getFooField();
}
}
}
main.ts的内容:
app.enableShutdownHooks();
此外,我尝试将服务初始化为 class 属性,但它创建了另一个服务实例 class,它具有不同的全局值。
export class AppShutdownHook implements OnApplicationShutdown {
private fooService = new FooService();
...
}
您需要用 @Injectable()
修饰 AppShutdownHook
以便 Nest 可以读取构造函数的元数据并正确执行您期望的依赖注入。
我尝试使用的服务来自外部库,该库本身定义了一个全局字段,我在不同的模块中使用它。
我试图在构造函数中注入服务,但调用时其值为 undefined
。
shutdown.hook.ts的内容:
export class AppShutdownHook implements OnApplicationShutdown {
constructor(
private fooService: FooService
) {}
async onApplicationShutdown(signal: string) {
if (signal === "SIGTERM") {
this.fooService.getFooField();
}
}
}
main.ts的内容:
app.enableShutdownHooks();
此外,我尝试将服务初始化为 class 属性,但它创建了另一个服务实例 class,它具有不同的全局值。
export class AppShutdownHook implements OnApplicationShutdown {
private fooService = new FooService();
...
}
您需要用 @Injectable()
修饰 AppShutdownHook
以便 Nest 可以读取构造函数的元数据并正确执行您期望的依赖注入。