30 Truffle 无法下载solc编译器指定版本

truffle-config.js 指定了solc版本之后:

编译时一直:

× Fetching solc version list from solc-bin. Attempt #3
Error: Failed to complete request to: version URLs. Are you connected to the internet?

RequestError: Error: connect ECONNREFUSED 127.0.0.1:443

怎么破?有没有办法手动下载solc编译器?

请先 登录 后评论

最佳答案 2020-08-20 10:05

办法是有的。

truffle 自动下载的 solc 编译器都存放在这个目录:~/.config/truffle/compilers/node_modules (~表示的账号的根目录)。

比如我的电脑上,有这么几个版本:

ls ~/.config/truffle/compilers/node_modules
soljson-v0.5.16+commit.9c3226ce.js
soljson-v0.6.10+commit.00c0fcaf.js 
soljson-v0.6.6+commit.6c089d02.js  
soljson-v0.6.9+commit.3e3065ac.js
soljson-v0.5.8+commit.23d335f2.js  
soljson-v0.6.4+commit.1dca32f3.js  
soljson-v0.6.8+commit.0bbfe453.js

因此只要找到对应的版本的soljson-v0.x.x+commit.xxxxxxx.js 文件就可以。

在以太坊官方的 github 上,提供了所有的编译器的版本, 可以通过这个链接下载 :https://github.com/ethereum/solc-bin/tree/gh-pages/bin

如果 GitHub 打开很慢,也可以用我在gitee fork的版本:https://gitee.com/xilibi2003/solc-bin/tree/gh-pages/bin

现在假设你下载好了soljson-v0.7.0+commit.9e61f92b.js 并放在了前面提到的编译器目录。

下载时,尽量选择正式版本,文件名没有 nightly

然后就可以在truffle-config.js里把编译器版本修改为0.7.0:

  compilers: {
    solc: {
      version: "0.7.0", 
    }
} 

这时编译就直接使用下载好的编译器。大功告成。

请先 登录 后评论

其它 1 个回答

文舒
请先 登录 后评论
  • 1 关注
  • 2 收藏,6950 浏览
  • 张小雨 提出于 2020-08-20 09:47