记录一次使用node-bzip2解压bz2文件的过程,安装Visual Studio C++环境

-

代码

import fs from 'fs';
import bzip2 from 'node-bzip2';

const filePath = 'C:/Users/xxx.bz2';

  fs.readFile(filePath, async (err, data) => {
    if (err) {
        console.error('读取文件出错:', err);
        return;
    }
    console.time('时间')
    // const input =new Uint8Array(data);
    const output = bzip2.decompress(data, { small: false }); // small代表是否用低内存占用模式 如果是true,解压时间会比较慢
    console.log('decompressed length:', output.length);
    console.timeEnd('时间')
    // output 是 Uint8Array,可以按需处理
});

300M的Bzip2文件大约需要22s,已经比其他库的至少40多s快很多了,但是一个关键点是,下载npm 安装 node-bzip2时必须有 Visual Studio(含 C++ 工作负载)环境;

node-bzip2 需要编译 C++ 原生扩展,必须有 Visual Studio(含 C++ 工作负载)环境。你当前没有安装 Visual Studio 或没有安装 C++ 工作负载,所以无法编译安装。

1. 安装 Visual Studio(含 C++ 工作负载)

  1. 下载并安装 Visual Studio Community
  2. 安装时勾选“使用C++的桌面开发”(Desktop development with C++)。
  3. 安装完成后,重启电脑,再重新执行 npm install node-bzip2

进入网站,直接点击下载即可,

下载好后,双击安装

 装前记得勾选 使用C++的桌面开发

安装完成后重新启动电脑

然后安装node-bzip2

yarn add node-bzip2

但是报错  cmake不是内部或外部命令

原因:

  • node-bzip2 依赖 CMake 进行编译,但你的系统没有安装 CMake,导致编译失败。
  • 这类原生扩展在 Windows 下经常因为缺少依赖(如 CMake、Python、VS C++工具链等)而安装失败。

1. 安装 CMake

  1. 访问 CMake 官网 下载并安装 CMake。
  2. 安装时勾选“Add CMake to the system PATH”
  3. 安装完成后,重启命令行窗口,输入 cmake --version,能看到版本号说明安装成功。
  4. 然后再尝试 npm install node-bzip2

安装时勾选“Add CMake to the system PATH”

然后用 cmake --version验证是否安装成功

之后继续安装node-bzip2

 

如果是electron项目,不建议使用node-bzip2,因为

 兼容性风险

  • 你打包时的操作系统、Node.js 版本、CPU 架构必须和用户机器完全一致,否则 .node 文件可能无法加载或报错。
  • 跨平台(Windows/macOS/Linux)或不同架构(x64/arm)时,必须分别在每个平台/架构下打包生成对应的安装包

node-bzip2 属于原生扩展模块,在跨平台项目(如 Electron 应用)中使用有明显兼容和分发风险,主要体现在:

  • 每个平台/架构都要单独编译和打包,不能直接通用。
  • 用户环境缺少编译工具时安装容易失败。
  • Node.js 版本升级后可能需要重新编译。

推荐跨平台场景优先使用纯 JS 或 wasm 实现(如 unbzip2-streamseek-bzip),这样可以大大简化分发和兼容性问题。

-

posted @ 2025-06-07 11:48  古墩古墩  Views(36)  Comments(0)    收藏  举报