参照文档安装Sunbird时npm install遇fibers及gyp错误求助
解决Sunbird安装中fibers@1.0.15 npm install失败的问题
嘿,我之前在部署类似项目时也碰到过fibers包安装失败的问题,尤其是node-gyp抛出的zlib相关错误,给你几个实用的解决步骤:
1. 补全系统编译依赖
node-gyp需要系统级的编译工具才能构建fibers这类原生模块,你用的是Ubuntu/Debian系系统,先执行下面的命令安装依赖:
sudo apt-get update sudo apt-get install build-essential python2.7 git
划重点:fibers@1.0.15是比较老的版本,只兼容Python 2.x,所以一定要确保python2.7安装完成,必要时可以用update-alternatives把系统默认Python切换到2.7
2. 清理npm缓存与残留文件
缓存损坏或者残留的不完整模块经常会导致这类安装错误,先清理干净:
npm cache clean --force rm -rf node_modules package-lock.json
之后再重新执行安装命令:
npm install
3. 替换为兼容的fibers版本
如果上面的方法没解决,大概率是fibers@1.0.15和你当前的Node.js版本不兼容。fibers@1.x系列只支持Node.js 4-8版本,要是你用的是更高版本的Node(比如10+),肯定会出问题。可以直接安装适配的版本:
npm uninstall fibers npm install fibers@3.1.1 --save
或者手动修改package.json里fibers的版本号为3.1.1,再执行npm install
4. 切换到兼容的Node.js版本
如果不想修改fibers版本,那就切换到和它兼容的Node.js版本,推荐用nvm来管理版本:
# 安装nvm(如果还没装) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 安装并切换到Node.js 8.x nvm install 8 nvm use 8
切换完成后再执行npm install,应该就能顺利安装fibers了。
额外说明
你看到的zlib.js:134:17错误,本质上是编译过程中下载依赖包时出现了网络中断或者包损坏,所以清理缓存+补全系统依赖是最常用的解决思路。如果还是不行,也可以尝试手动下载fibers的源码包放到npm缓存目录,但前面的步骤基本能覆盖大部分情况。
内容的提问来源于stack exchange,提问作者Amol Ghatol




