-1

所以我对这段代码有这个问题,并且似乎无法弄清楚为什么我在使用终端运行脚本时会收到这个错误:

(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();

任何人都可以更好地了解此帮助吗?谢谢。

4

1 回答 1

1

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

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

this.web3 = new Web3('wss://mainnet.infura.io/ws/v3/' + projectId);
于 2021-01-27T20:17:04.200 回答