truffle与nodejs的版本问题

今年三月份开始使用WSL + truffle,那时候truffle刚到4.1.8版本(node 8.8.0),就一直用这个版本,没想到用到的却是一个最稳定的版本。
后来,由于4.1.8最高只支持solc的0.4.23,便将truffle升级到最新的4.1.14(node 也升级到10.5.0),噩梦便开始了:各种意想不到的坑,例如:

  • fs.writeFileSync 跟 fs.existsSync的相对目录不一样。假设truffle的根目录下的test目录下有个文件 X.js,二者分别要这样访问:fs.writeFileSync(‘test//migrateResult.json’) fs.existsSync("…//test//migrateResult.json")
  • 4.1.14版本,假如migrate时脚本中有多个合约,没等到所有合约部署完就会退出部署、没有任何错误提示
  • 新版本莫名其妙地出现栈溢出提示:Maximum call stack size exeeded
  • 发布合约到ropsten测试网络,但是提交源代码时无法通过验证。
    等等一系列的问题,在将truffle会退到4.1.8版本(node 8.8.0)之后,一切正常了。。。。

安装nodejs 8.8.0:

  • wget https://nodejs.org/dist/v8.8.0/node-v8.8.0-linux-x64.tar.gz
  • sudo tar -xf node-v8.8.0-linux-x64.tar.gz - -directory /usr/local - -strip-components 1

安装truffle 4.1.8:

近期又手贱,将truffle更新到了5.0,依然巨坑,虽然改进很大,但是与之相配合的软件诸如remix却无法安装,不得已又退回了4.1.8.
5.0的改动较大,有以下两点:

  • 支持solidity中重载函数的调用。
  • 使用的web3版本由0.20.6,升级到1.0。
  • 部署时会先模拟部署一遍,以保证正确率。(仅在测试网络以及正是网络环境下才会触发,虚拟机环境下不会模拟部署)
  • 部署时控制台信息更加丰富

你可能感兴趣的:(BlockChain,Solidity)