我做以太坊应用,web3.js 版本号为 1.0.0-beta.48,在Hbuilder中运行到浏览器时,运行正确,而通过 发布-> h5 编译出来之后,调用 web3.eth.getBalance() 函数签名出来的参数即是错误的。 在设想是否因测试和生产两种编译方式不同导致的。
通过发布-h5编译出来地的参数为(如下可见 methods 里多了一层):
{
"jsonrpc":"2.0",
"id":31,
"method":{
"jsonrpc":"2.0",
"id":30,
"method":"eth_getBalance",
"params":[
"0x7c3d30c9bafb371f81aa0fa00c18a54dea02c5de",
"latest"
]
}
}
而通过运行-浏览器编译出来则运行正确,为:
{
"jsonrpc":"2.0",
"id":12,
"method":"eth_getBalance",
"params":[
"0x7c3d30c9bafb371f81aa0fa00c18a54dea02c5de",
"latest"
]
}
5 个回复
justlikebefore (作者) - 独立开发者
找到原因了,是因为 web3-providers 里面用了硬编码来判断对象所属类,如下:
而编译之后,取出的 provider.constructor.name = 'e'
6***@qq.com
请问您知道web3.eth.getBalance()在真机运行时报错
Uncaught (in promise) TypeError: this.init is not a function at __uniappservice.html:2
怎么解决吗?
1***@163.com - 前端
你好。我也在做这个,想问下你通过npm下载web3引入报错bota is undefined是什么原因啊?我也查了资料说是buffer,我也用了不起作用
y***@163.com - Android开发者
为啥 我点击 发布为-h5 没有反应啊。来自小白的求助 。
1***@qq.com - 胖虎