node-gyp环境配置踩坑

13,599 阅读2分钟

背景

新公司项目A的用到了 node-gyp,由于系统环境问题导致npm install一直失败,特此记录一下踩坑过程。

node-gyp的主要作用是编译原生 C++ 模块,解决模块的跨平台问题。开发 Electron 时也经常能见到它的身影

正文

笔者开发环境:
系统:window 10
node:16.13.1
npm:8.3.0
node-gyp:8.4.1

问题1:缺少 python 环境

image.png

image.png

why
node-gyp 是社区对 google gyp 工具的封装,而 gyp 是用 python 写的,所以运行时需要 python 环境

how
根据提示安装最新版的 python,比如笔者当前的 python 3.10.1,安装时别忘记勾选添加环境变量

image.png

如果系统存在多个版本的python,可以手动配置node-gyp 所需的python版本

npm config set python python3.10

问题2:缺少 C++ 开发环境

image.png

why
编译 C++ 模块怎能没有 C++ 环境的!!!

how
按照 node-gyp 文档提示,推荐使用 Visual Studio Build Tools 安装,选择 Visual studio 2019,并勾选下方选项耐心等待。。。

image.png

安装完成后,回到项目A运行npm install,done!

image.png

问题3:msvs_version版本对不上

image.png

why
npm 指定的编译器版本和系统中的版本对不上号,比如笔者安装的是Visual studio 2019,却按文档配置成了 2017 ↓↓↓

npm config get msvs_version
2017

how
修改为对应的 Visual studio 版本或删除版本指定(node-gyp会自动查找)

npm config set msvs_version 2019
# or
npm config delete msvs_version

问题4:按照上述操作还是失败

em...这个问题笔者也遇过,搜了很多资料,有的说手动装 python2.7 和 Visual studio 2015的,有的说使用 windows-build-tools的,但这些方案都是针对较老版本的node-gyp,笔者尝试过都不成功,特别是windows-build-tools,作者都说有更好的选择了。

image.png

how
分析 node-gyp 版本对应的 python 版本和 Visual studio 版本,删除不匹配的版本,重新安装指定范围内的版本,如文中 node-gyp 8.4.1 可以搭配 python3.10.1 + Visual studio 2019使用。

小结

安装 node-gyp 对应的 python 版本和 Visual studio 版本