web3.js 使用过程中的常见错误

发布于 2024-05-14 17:53:28 字数 1419 浏览 23 评论 0

错误 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

恬淡成诗

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

ambitionlv

文章 0 评论 0

澉约

文章 0 评论 0

hukaixi

文章 0 评论 0

自演自醉

文章 0 评论 0

詹宝成

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文