压缩 (gzip) 在 NestJS 中不起作用

使用命令创建了一个标准的 NestJS 项目: nest new project-name 。之后,我安装了压缩 npm i --save compression 并将其插入到项目中。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as compression from 'compression';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(compression());
  await app.listen(3000);
}
bootstrap();

但是压缩不起作用,响应没有 gzip

Response in browser

我已经尝试清除缓存,重新启动浏览器,没有任何效果。

谢谢您的帮助

stack overflow Compression (gzip) does not work in NestJS
原文答案

答案:

作者头像

如果没有其他工作:

  const expressApp = express();
  expressApp.use(compression());
  const expressAdapter = new ExpressAdapter(expressApp);
  const app = await NestFactory.create(AppModule, expressAdapter);
  await app.listen(3000);
作者头像

首先,安装以下软件包:

npm i --save compression

main.ts 文件的 bootstrap function 中,应用 compression middleware 如下

async function bootstrap() {
  const app: INestApplication = await NestFactory.create(AppModule);
  ...
  app.use(compression({
    filter: () => { return true },
    threshold: 0
  }));

  ...
  await app.listen(4100);
}

然后,您将看到结果

enter image description here

#### 笔记

如果您的浏览器已打开,请先将其关闭,然后再打开

Control+Shift+R 或 Shift + F5 = 重新加载当前页面,忽略缓存内容。