I get this error Unhandled Runtime Error TypeError: Cannot read properties of undefined (reading 'args') whenever I want to create an nft on my decentralised application and it only appears after I confirm the payment on metmask then it just pops up and I have no idea why it keep occurring. here is the code that I get the error from:
async function createSale() {
const url = await createItem();
const web3Modal = new Web3Modal();
const connection = await web3Modal.connect();
const provider = new ethers.providers.Web3Provider(connection);
const signer = provider.getSigner();
/* next, create the item */
let contract = new ethers.Contract(nft, NFT.abi, signer);
let transaction = await contract.createToken(url);
let tx = await transaction.wait();
let event = tx.events[0];
let value = event.args[2];
let tokenId = value.toNumber();
const price = ethers.utils.parseUnits(formInput.price, "ether");
contract = new ethers.Contract(
marketplaceAddress,
NFTMarketplace.abi,
signer
);
let listingPrice = await contract.getListingPrice();
listingPrice = listingPrice.toString();
transaction = await contract.createMarketItem(tokenId, price, {
value: listingPrice,
});
await transaction.wait();
router.push("/");
}
Here is the new code with printing events:
async function createSale() {
const url = await createItem();
const web3Modal = new Web3Modal();
const connection = await web3Modal.connect();
const provider = new ethers.providers.Web3Provider(connection);
const signer = provider.getSigner();
/* next, create the item */
let contract = new ethers.Contract(nft, NFT.abi, signer);
let transaction = await contract.createToken(url);
let tx = await transaction.wait();
if (!tx.events || tx.events.length === 0) {
console.error("No event found in the transaction.");
return;
}
let event = tx.events[0];
if (!event.args || event.args.length < 3) {
console.error("Event args missing or insufficient.");
return;
}
let value = event.args[2];
let tokenId = value.toNumber();
const price = ethers.utils.parseUnits(formInput.price, "ether");
contract = new ethers.Contract(
marketplaceAddress,
NFTMarketplace.abi,
signer
);
let listingPrice = await contract.getListingPrice();
listingPrice = listingPrice.toString();
transaction = await contract.createMarketItem(tokenId, price, {
value: listingPrice,
});
await transaction.wait();
router.push("/");
}
I get this output "No event found in the transaction."