如何在 nest.js 中为 ApplicationModule 以外的模块应用中间件?

How to apply middleware in nest.js for module other than ApplicationModule?

我正在尝试基于配置应用中间件,如下所示:

export class UsersModule implements NestModule{
  configure(consumer: MiddlewaresConsumer): void {
    const authRoutes = UsersController.getAuthRoutes();
    consumer
      .apply(AuthMiddleware)
      .forRoutes(...authRoutes);
  }
}

方法getAuthRoutes是静态的:

  public static getAuthRoutes(){
    return [
      { path: `/api/users`, method: RequestMethod.ALL},
    ];
  }

我的 AuthMIddleware 非常基础:

@Middleware()
export class AuthMiddleware implements NestMiddleware {
  constructor(
    @Inject(constants.logger) private logger: Winston,
  ){}

  resolve(...args: any[]): ExpressMiddleware {
    // return passport.authenticate('jwt', { session: false });
    return (req, res, next) => {
      this.logger.debug('AuthMiddleware');
      next();
    };
  }
}

它只是在控制台中记录行。我正在尝试通过获取请求 /api/users 进行访问,我正在获取用户列表,但控制台中没有 AuthMiddleware 消息。有什么建议吗?

查看我的问题here。这只是对文档的误解。