将 ethers.js v6 与 MetaMask 结合使用时,我在 DApp 中遇到事件处理问题。情况是这样的:
contract.on("EventName", callback)
订阅时,不会收到合约发出的事件。我怀疑可能存在兼容性问题或配置步骤,或者我不知道接收特定于 MetaMask 的事件导致此差异的原因。这是我正在使用的代码的简化版本:
const { ethers } = require("ethers");
// Assuming MetaMask is installed and injected as window.ethereum
const provider = new ethers.providers.Web3Provider(window.ethereum);
const contractAddress = "YOUR_CONTRACT_ADDRESS";
const abi = [...]; // Your contract ABI definition
const contract = new ethers.Contract(contractAddress, abi, provider);
// Subscribe to contract events
contract.on("eventName", (data) => {
console.log("Event received:", data);
});
还有其他人遇到过 ethers.js v6 和 MetaMask 的类似问题吗?任何有关如何排除和解决此问题的见解或建议或任何信息将不胜感激。预先感谢!
您可以尝试使用这样的 addListener 方法。
contract.addListener("eventName", (data) => {
console.log("Event received:", data);
});