ethereum - 返回错误:方法 web3_clientVersion 不存在/不可用
问题描述
我一直在尝试在使用 EVM 和 Solidity 的 Harmony 区块链中使用 openzeppelin 制作可升级的智能合约......它在不使用 openzeppelin 时是可部署的,但是当我这样做时,它会抛出上述错误......还有我的一个队友能够毫无错误地部署它...
我不知道这是我的系统的问题,还是 Harmony 的 TruffleProvider 的问题......他们似乎正在尝试解决这个问题并在这个分支上构建https://github.com/harmony-one/sdk/tree/ truffle_provider,我的队友终于能够部署它,但我仍然遇到同样的错误:
$盎司部署
无需编译,所有合同都是最新的。
? 选择要实例化的合约:Ball
? 选择网络:稳定
✓ 新增合同:Ball
返回错误:方法 web3_clientVersion 不存在/不可用
解决方案
代替
var web3 = new Web3(window.web3.currentProvider);
和
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
将 url 调整为以太坊节点地址(在我的例子中是 ganache-cli)。
在我的情况下,调用web3.version.getNode()
. 发现此方法已被web3.eth.getNodeInfo()
on web3 v1.0 取代。尝试将代码更新为web3.eth.getNodeInfo()
但会抛出错误"web3Obj.eth.getNodeInfo is not a function"。ganashe-cli 和 metamask web3 提供程序之间很可能存在版本冲突。做出这种改变解决了这个问题。
推荐阅读
- c# - 重构 if 条件,以便 if 和 else 块的逻辑可以互换
- python - 如何从版本号字符串中删除“前导”零?
- r - 使用 ggmap 和 gganimate 创建“天桥”地图动画
- python - 在树莓派 3 上使用 V4L2、python 的奇怪结果
- c# - 使用c#在数据库中上传图像不起作用
- asynchronous - 如何在执行下一条指令 Flutter 之前完成异步 Future 任务
- r - 验证模型并在 glm 中引入新的预测器
- sql - 获取日期前后列的总和?
- alpakka - alpakka cassandrasource 从 cassandra 连续读取数据
- javascript - 使用 javascript / jquery 创建 Json 数组