web3.js 使用过程中的常见错误
错误 1:使用 web3.eth.filter 报错:Uncaught TypeError: web3.eth.filter is not a function
在 web1.10 以上的版本中, web3.eth.filter 方法已被弃用,并且不再可用。 取而代之的是使用 web3.eth.subscribe 方法来实现类似的功能。
var subscription = web3.eth.subscribe('newBlockHeaders', function(error, result){
if (!error) {
console.log(result);
}
});
// 取消订阅
subscription.unsubscribe(function(error, success){
if(success)
console.log('取消订阅成功');
});
错误 2:subscribe 订阅事件报错,得用 websocket 协议
Error: The current provider doesn at Subscription.subscribe
pub / sub 不能通过 HTTP 获得。但是,您可以通过 WS 使用它。因此,您引用的文档不是 100%错误,它只是省略了代码的提供程序部分。尝试使用网络套接字连接启动节点(geth --ws --wsport 8545 ...,假设您使用的是 geth),并更改为 WebsocketProvider。
var Web3 = require("web3"); var ether_port = 'ws://localhost:8545' var web3 = new Web3(new Web3.providers.WebsocketProvider(ether_port)); web3.eth.subscribe("pendingTransactions", function(err, result){ if (err){ console.log(err) } else { console.log("result: ", result) } });
错误 3:引入 web3 报错
UncaughtTypeError: Web3.providers.HttpProvider is not a constructor。
引入 web3 报错:
const Web3 = require('web3');
const web3 = new Web3('http://localhost:8545');
报错如下:UncaughtTypeError: Web3.providers.HttpProvider is not a constructor。
问题是,我的 web3 版本太高了:4.0.2,我降级到 1.10.0 就不存在这个问题了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论