You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cypress中使用ZLib解压gzip格式的响应体

错误原因

你当前的问题由两个核心错误导致:

  • 依赖安装错误:你要使用的imaya/zlib.js对应的npm包名为zlibjs,而非你安装的已废弃的zlib包,后者是Node.js内置zlib模块的旧镜像包,早已停止维护。
  • 代码逻辑错误:require('zlib')后没有赋值给变量直接调用Zlib会报未定义错误;同时请求未指定encoding: null,会导致响应体被强制转成字符串,损坏原始二进制压缩数据。

方案1:使用你需要的zlib.js库在浏览器侧直接解压

  1. 先卸载错误依赖,安装正确的包:
npm uninstall zlib
npm install zlibjs
  1. 调整测试代码如下:
// 正确引入zlibjs的Gunzip方法
const { Gunzip } = require('zlibjs')

cy.request({
  url: fileUrl,
  // 关键配置:告诉Cypress不要处理响应体,直接返回原始二进制Buffer
  encoding: null
}).then((resp) => {
  // 将Buffer转换为zlibjs支持的Uint8Array格式
  const compressedData = new Uint8Array(resp.body)
  const gunzip = new Gunzip(compressedData)
  // 执行解压
  const decompressedBuffer = gunzip.decompress()
  // 如果解压结果是文本,可通过TextDecoder转成字符串使用
  const content = new TextDecoder('utf-8').decode(decompressedBuffer)
  // 后续可对content做断言处理
  console.log(content)
})

方案2:使用Node.js内置zlib模块(更稳定,不需要额外安装依赖)

Cypress测试代码运行在浏览器环境,无法直接调用Node内置模块,需要通过cy.task将解压逻辑放到Node层执行:

  1. 卸载错误依赖:
npm uninstall zlib
  1. 修改cypress.config.js配置,添加解压任务:
const { defineConfig } = require('cypress')
// Node.js内置zlib模块,不需要额外安装
const zlib = require('zlib')
const { promisify } = require('util')
const gunzip = promisify(zlib.gunzip)

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('task', {
        // 自定义gzip解压任务
        async decompressGzip(compressedBuffer) {
          const decompressed = await gunzip(compressedBuffer)
          // 可根据需要返回字符串或原始Buffer
          return decompressed.toString('utf8')
        }
      })
    },
  },
})
  1. 测试代码调用:
cy.request({
  url: fileUrl,
  encoding: null
}).then((resp) => {
  cy.task('decompressGzip', resp.body).then(decompressedContent => {
    // 直接使用解压后的内容
    console.log(decompressedContent)
  })
})

额外优化提示

Cypress默认会自动携带Accept-Encoding: gzip, deflate请求头,且如果服务端返回正确的Content-Encoding: gzip响应头,Cypress会自动解压响应体,你不需要手动做任何解压操作,直接访问resp.body就能拿到解压后的内容。如果符合这个场景可以直接删掉所有解压逻辑,简化代码。

内容的提问来源于stack exchange,提问作者yurii.pitomets

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:08