Solidity项目yarn compile报错:无法获取二进制文件 安装Waffle后文件缺失
Uniswap V2 Core 本地编译报错修复
报错现象
- 完成仓库克隆与yarn依赖安装后,执行
yarn compile,触发solc 0.6.6二进制拉取报错,返回Not Found - 手动执行
yarn add waffle后,再次执行yarn compile,触发ENOENT: no such file or directory错误,缺失文件路径为项目目录下cache/solcjs/node_modules/solc.js,对应缓存目录无有效文件
修复步骤
- 清理残留无效配置
- 删除项目下空的
cache/solcjs目录,清除yarn缓存中下载失败的solc临时包
- 删除项目下空的
- 配置本地solc依赖
- 执行
yarn add solc@0.6.6,从npm registry拉取预编译的0.6.6版本solc二进制,绕过默认的GitHub release拉取逻辑 - 修改项目根目录
truffle-config.js中的solc配置,将原字符串形式的solc: "0.6.6"替换为本地路径引用的配置:solc: { version: "0.6.6", contracts: require("path").join(__dirname, "node_modules", "solc") }
- 执行
- 匹配官方锁定的waffle版本
- 卸载多余安装的高版本waffle,执行
yarn add ethereum-waffle@3.0.0,避免高版本waffle自动初始化空缓存目录引发的路径写入错误 - 手动创建缺失的目录结构:在项目下逐级新建
cache/solcjs/node_modules路径
- 卸载多余安装的高版本waffle,执行
- 重新执行
yarn compile,验证编译流程正常完成
内容的提问来源于stack exchange,提问作者Sptz
相关产品推荐
相关产品推荐

