子文件夹执行npm install安装openzeppelin-solidity报node-gyp缺失Visual Studio错误
问题根因
- 报错触发点为
openzeppelin-solidity@2.3依赖的sha3@1.2.2包,该版本需要通过node-gyp编译本地C扩展,你的Windows环境缺少node-gyp编译所需的Visual Studio C开发组件 - 根目录执行命令无报错的原因是根目录的依赖链未涉及需要编译的原生扩展,或根目录已存在缓存的编译完成的sha3包,子目录无对应缓存且依赖结构不同
解决方案
方案一(优先推荐,无需安装大型开发组件)
旧版原生sha3包已被废弃,可直接安装无需编译的纯JS兼容替代包,跳过编译步骤:
- 进入
app子目录后,先执行命令:npm install --save js-sha3 - 再执行目标安装命令:
npm install --save openzeppelin-solidity@2.3
npm会自动识别已存在的sha3兼容实现,跳过原生sha3包的安装编译流程。
方案二(配置完整node-gyp编译环境)
如果需要保留原生sha3包的功能,可通过以下操作配置编译环境:
- 以管理员权限打开PowerShell,执行全局安装命令:
npm install --global --production windows-build-tools - 等待安装完成后,执行配置命令指定VS版本:
npm config set msvs_version 2017 - 重启终端后重新进入app子目录,执行原安装命令即可正常完成安装。
内容的提问来源于stack exchange,提问作者нεx
相关产品推荐
相关产品推荐

