So I have this problem with this code and cant seem to figure out why i am getting this error when I run the script with the terminal:
(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();
Can anyone with a better understanding of this assist?
You have an misspellings in
constuctor, thusthis.web3...line never run. Correct one isconstructor.In your code there is another problem, when you use websocket, you dont need to use
HttpProviderjust pass websocket url to web3: