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

如何用JavaScript+node-gzip压缩Blob二进制文件?报错修复

修复Blob压缩时的"Illegal invocation"错误

错误原因

你踩了两个关键坑:

  • 直接把fileblobA.arrayBuffer这个方法引用传给了gzip,既没调用方法,又因为方法脱离Blob实例上下文执行,触发了"Illegal invocation"错误。
  • Blob.arrayBuffer()是异步方法,返回的是Promise,不能直接把这个Promise丢给gzip处理,得先等它解析出真实的ArrayBuffer数据。

修复后的代码

先调用arrayBuffer()并await拿到数据,再把ArrayBuffer转成node-gzip支持的格式(比如Uint8Array或Buffer),再传给gzip:

const fileblobA = new Blob([result],{type:'application/octet-stream'})
const { gzip, ungzip } = require('node-gzip');
// 先await获取实际的ArrayBuffer数据
const arrayBuffer = await fileblobA.arrayBuffer();
// 转成Uint8Array传给gzip
const gzipA = await gzip(new Uint8Array(arrayBuffer));

补充说明

如果是在Node.js环境下,也可以把ArrayBuffer转成Buffer:

const buffer = Buffer.from(arrayBuffer);
const gzipA = await gzip(buffer);

两种转换方式都能被node-gzip正常处理。

内容的提问来源于stack exchange,提问作者kn11n

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:10:28