NestJS:如何将 ClassSerializerInterceptor 设置为全局拦截器

NestJS: How to setup ClassSerializerInterceptor as global interceptor

我在每个 Controller 代码中使用 @UseInterceptors(ClassSerializerInterceptor),所以我决定将其设为全局并尝试设置它,但没有成功。

我尝试了 newnew 并最终得到了这样的东西完全不起作用。

app.useGlobalInterceptors(new ClassSerializerInterceptor(new Reflector()));

我检查了 NestJS 源代码,我认为它不能用作全局但它应该。

您是否尝试过使用这行代码:

app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));

我更喜欢在 app.modules.ts 中注入全局拦截器。

从具有 useGlobalInterceptors() 的任何模块外部注册的全局拦截器无法注入依赖项,因为这是在任何模块的上下文之外完成的。

import { ClassSerializerInterceptor, Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';

@Module({
  providers: [
    {
      provide: APP_INTERCEPTOR,
      useClass: ClassSerializerInterceptor,
    },
  ],
})
export class AppModule {}

参考:

How to use Service in Global-interceptor in NEST Js

https://docs.nestjs.com/interceptors#binding-interceptors