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

Angular 11升级后zlib库报错:无法解析'./zlib_bindings'模块

解决Angular 11中zlib库的模块找不到问题

问题根源

你用的zlib包是Node.js专属的原生依赖,依赖底层C++绑定(zlib_bindings),但Angular运行在浏览器环境,根本加载不了这类Node专属模块,所以才会报找不到./zlib_bindings的错误。另外你代码里的inflateSync用法也错了——同步方法是直接返回结果的,不需要传回调,回调是异步inflate方法的用法。

解决步骤

换成浏览器兼容的纯JS压缩库pako,具体操作如下:

  1. 安装pako
npm install pako --save
  1. 修改代码
import pako from 'pako';

// 把base64转成浏览器支持的Uint8Array(替代Node的Buffer)
const uint8Array = Uint8Array.from(atob(data), char => char.charCodeAt(0));
try {
  // 同步解压数据
  const decompressedData = pako.inflateSync(uint8Array);
  // 把二进制数据转成字符串
  const resultStr = new TextDecoder().decode(decompressedData);
  this.excelService.export(`xxx${base.name}`, resultStr);
} catch (err) {
  console.error('解压失败:', err);
}

额外说明

  • pako是纯JavaScript实现的zlib兼容库,完全适配浏览器环境,不需要依赖任何Node原生模块
  • 浏览器里没有Node的Buffer对象,用atob配合Uint8Array转换base64数据更稳妥
  • inflateSync作为同步方法,出错会直接抛出异常,所以要用try/catch捕获错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:05:23