微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

类型错误:无法读取未定义的属性“eth”

如何解决类型错误:无法读取未定义的属性“eth”

所以我在这代码中遇到了这个问题,似乎无法弄清楚为什么我在使用终端运行脚本时会收到此错误

(node:30800) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'eth' of undefined
const Web3 = require('web3');

class TransactionChecker{
    web3;
    account;

    constuctor(projectId,account){
        this.web3 = new Web3(new Web3.providers.HttpProvider('wss://mainnet.infura.io/ws/v3/' + projectId));
        this.account = account.toLowerCase();
    }

    async checkBlock(){
      let block = await this.web3.eth.getBlock('latest');
      let number = block.number;
      console.log('Searching block ' + number);

      if (block != null && block.transactions != null){
        for (let txHash of block.transactions){
          let tx = await this.web3.eth.getTransaction(txHash);
          if (this.account == tx.to.toLowerCase()) {
            console.log('Transaction found on block: ' + number);
            console.log({address: tx.from,value: this.web3.utils.fromWei(tx.value,'ether'),timestamp})
          }
        }
      }
    }
}

let txChecker = new TransactionChecker('6bad75506d6649428e0e34ba41d51805','0x9cad169749bBF8a3Fd735B26C21F2C7F4D8c5383');
txChecker.checkBlock();

对此有更深入了解的任何人都可以提供帮助吗?谢谢。

解决方法

您在 constuctor 中有拼写错误,因此 this.web3... 行永远不会运行。正确的是constructor

在您的代码中还有一个问题,当您使用 websocket 时,您不需要使用 HttpProvider 只需将 websocket url 传递给 web3:

this.web3 = new Web3('wss://mainnet.infura.io/ws/v3/' + projectId);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?