全局安装jest时node-gyp rebuild持续失败该如何解决?
问题原因
本次安装失败的核心是jest全局安装时依赖的canvas包需要本地编译,当前node 16版本对应的node-gyp v7.1.2与该版本canvas的编译配置不兼容,无法找到node对应的v8头文件,导致node-gyp重建失败。
解决方案
按优先级从高到低选择即可:
- 优先选择局部安装jest,避免全局依赖冲突,绝大多数场景下都可以解决该问题:
进入你的项目目录后执行如下命令:
后续使用时通过# 未初始化npm项目先执行初始化 npm init -y # 局部安装jest到开发依赖 npm install jest --save-devnpx jest调用,或在package.json的scripts字段中配置测试命令即可。 - 若必须全局安装jest,按如下步骤操作:
- 先清理现有缓存和残留的全局jest文件:
npm cache clean --force npm uninstall jest -g- 升级npm到最新稳定版,同步升级内置的node-gyp适配node 16版本:
npm install -g npm@latest- 提前安装适配node 16版本的预编译canvas包,跳过本地编译步骤:
npm install canvas@2.9.0 -g- 重新全局安装jest:
npm install jest -g - 若仍然报错,可通过管理员权限打开终端,安装windows编译配套工具自动配置依赖环境,无需手动调整Python和MSBuild版本:
安装完成后重新执行全局安装jest的命令即可。npm install -g windows-build-tools
内容的提问来源于stack exchange,提问作者Zhou Lianjian
相关产品推荐
相关产品推荐

