安装loom-truffle-provider出现node-gyp与scrypt不兼容报错如何解决
问题根本原因
你遇到的编译报错核心是loom-truffle-provider依赖的scrypt@6.0.3版本停止维护多年,其原生扩展使用的V8引擎接口仅适配到Node.js 12版本,与你当前使用的Node.js 14的V8接口不兼容,和本地多版本node-gyp共存的问题没有直接关系。
可选解决方案
方案1:替换不兼容的scrypt依赖(最推荐)
scrypt官方已经推出了无需编译的纯JavaScript实现版本scrypt-js,可以通过npm的别名安装功能直接替换原有依赖,不需要降级Node版本:
- 本地项目安装执行:
npm install loom-truffle-provider --save --legacy-peer-deps scrypt@npm:scrypt-js
- 全局安装执行:
npm install -g loom-truffle-provider --legacy-peer-deps scrypt@npm:scrypt-js
方案2:指定npm调用高版本node-gyp
如果你需要优先尝试切换node-gyp版本解决,可以手动指定npm调用的node-gyp路径:
- 先查询全局node-gyp的绝对路径:
which node-gyp
正常返回结果为/home/joe/.npm-global/bin/node-gyp
2. 安装时添加参数指定node-gyp路径:
npm install -g loom-truffle-provider --node-gyp=/home/joe/.npm-global/bin/node-gyp
请将路径替换为你自己执行which node-gyp返回的结果
方案3:临时切换Node.js 12版本安装
如果上述两个方案都不生效,可以临时切换到Node.js 12版本完成安装,使用时再切回Node.js 14即可:
- 安装nvm(Node版本管理工具,已安装可跳过,可自行搜索官方安装教程)
- 重启终端后安装Node.js 12:
nvm install 12
- 切换到Node.js 12执行安装:
nvm use 12 npm install -g loom-truffle-provider
- 切回你原有的Node.js 14版本:
nvm use 14
内容的提问来源于stack exchange,提问作者Joe Molnar
相关产品推荐
相关产品推荐

