如何修改系统设置解决npm ci执行时的node-gyp报错?
修复npm ci执行时erlpack编译失败的问题
问题根源
日志核心错误是z_size_t未定义,本质原因有三点:
- 旧版
erlpack未适配Node.js 18的zlib头文件变动 - VS2017 Build Tools的C++编译器对新语法支持不足
- Python 3.11与node-gyp@9.3.1存在兼容性问题
修复步骤
按优先级从易到难尝试:
1. 替换为维护版erlpack
原erlpack已停止维护,无法兼容Node.js 18,直接改用社区维护分支:
- 编辑项目
package.json,将"erlpack"替换为:"@discordjs/erlpack": "^0.1.0" - 删除旧依赖缓存:
rm -rf node_modules del package-lock.json - 重新执行安装:
npm ci
2. 降级Node.js到16.x LTS
Node.js 18的zlib头文件有破坏性更新,旧版依赖未适配,用nvm降级:
- 安装nvm后运行:
nvm install 16.20.2 nvm use 16.20.2 - 清理缓存后重新安装:
rm -rf node_modules del package-lock.json npm cache clean --force npm ci
3. 切换Python版本到3.10/3.9
node-gyp@9.3.1对Python 3.11支持不完善:
- 卸载Python 3.11,安装Python 3.10
- 配置npm指向新Python路径:
npm config set python "C:\Users\maddi\AppData\Local\Programs\Python\Python310\python.exe" - 重新执行
npm ci
4. 更新VS Build Tools到2022
VS2017的C++编译器无法处理Node.js 18头文件的新语法:
- 卸载VS2017 Build Tools
- 下载安装VS2022 Build Tools,安装时勾选C++构建工具组件(包含MSVC编译器、Windows SDK)
- 重启电脑后重新执行
npm ci
内容的提问来源于stack exchange,提问作者Maddie Bennet
相关产品推荐
相关产品推荐

