加载指定版本Solidity编译器遇「Error retrieving binaries:not found」问题求助
解决solc.loadRemoteVersion「Error retrieving binaries : not found」报错
常见原因及修复方案
- 版本格式不规范:
solc.loadRemoteVersion要求版本号必须带v前缀(如v0.8.20),或者使用完整的commit哈希值。直接写0.8.20这种无前缀格式会导致CDN寻址失败。 - 网络访问限制:该方法默认从Solidity官方CDN拉取编译器二进制文件,如果你的Node.js服务器无法访问外部CDN,就会触发找不到文件的错误。
- 本地手动部署旧版本:
- 先通过npm单独安装目标版本:
npm install solc@<具体版本号>,比如npm install solc@0.8.19。 - 安装完成后,通过本地加载方式调用:
const solc = require('solc'); solc.loadLocalVersion('0.8.19', (err, solcInstance) => { if (err) { console.error(err); return; } // 在这里使用solcInstance处理编译逻辑 });
- 先通过npm单独安装目标版本:
- 版本下线问题:部分极旧的Solidity版本已从官方CDN移除,无法通过
loadRemoteVersion拉取,必须本地安装对应版本才能使用。
额外提示
- 确认Node.js版本与目标solc版本兼容,部分旧版solc不支持最新Node.js环境。
- 若服务器有严格网络管控,可提前下载对应版本的solc二进制文件到项目目录,通过
solc.setSolcPath('./path/to/solc')指定路径后再加载。
内容的提问来源于stack exchange,提问作者JoshuaDev
相关产品推荐
相关产品推荐

