TypeError: Cannot read property 'eth' of undefined
TypeError: Cannot read property 'eth' of undefined
所以我对这段代码有这个问题,似乎无法弄清楚为什么当我 运行 使用终端脚本时会出现这个错误:
(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);
所以我对这段代码有这个问题,似乎无法弄清楚为什么当我 运行 使用终端脚本时会出现这个错误:
(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);