`Web3.utils` 未定义,`Web3.eth` 未定义
Posted
技术标签:
【中文标题】`Web3.utils` 未定义,`Web3.eth` 未定义【英文标题】:`Web3.utils` is undefined and `Web3.eth` is undefined 【发布时间】:2019-09-01 06:36:08 【问题描述】:将 Web3 从 1.0.0-beta.34
升级到 1.0.0-beta.37
后,尝试访问 Web3.utils
、Web3.eth
、Web3.bzz
和 Web3.shh
的任何属性都会出错。例如,在2_deploy_contract.js
调用web3.utils.utf8ToHex('some string')
如下:
const Web3 = require('web3');
web3.utils.utf8ToHex('some string');
正在引发以下异常:
> TypeError: Cannot read property 'utf8ToHex' of undefined
我发现下面的代码sn-p:
const Web3 = require('web3');
console.log("Web3.eth = " + Web3.eth)
console.log("Web3.utils = " + Web3.utils)
console.log("Web3.bzz = " + Web3.bzz)
console.log("Web3.shh = " + Web3.shh)
将输出:
> Web3.eth = undefined
> Web3.utils = undefined
> Web3.bzz = undefined
> Web3.shh = undefined
【问题讨论】:
【参考方案1】:静态属性(Web3.utils
、Web3.eth
等...)已被删除,因为如果有人只使用utils
,那么他可能应该直接使用web3-utils
和web3-eth
模块,而不是捆绑完整的库 (ref)。
示例工作代码:
const Web3Utils = require('web3-utils');
const someString = Web3Utils.utf8ToHex('some string');
注意:长期目标是移除 Web3 类并创建 Web3 命名空间。但这将在稳定版发布后完成 (ref)。
【讨论】:
既然可以有3个包,为什么还要一个包以上是关于`Web3.utils` 未定义,`Web3.eth` 未定义的主要内容,如果未能解决你的问题,请参考以下文章
web3.js--getBalance到web3.utils.fromWei,将值存储在一个变量中,用于表中
如何使用 web3.js 在 Truffle 测试中进行基本算术运算
Solidity 和 Web3 sha3() 方法返回别的东西
[FAQ] web3js, Error: Please pass numbers as strings or BN objects to avoid precision errors.