You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试中调用ethers.utils.parseEther等方法时遇未定义错误求助

问题排查与解决方案

一、Ethers相关错误修复

1. ethers.utils.parseEther 未定义错误

错误原因:

  • 测试代码中直接使用ethers但未正确获取Hardhat环境的ethers实例;
  • sendValue定义在beforeEach外部,此时Hardhat环境可能未初始化完成。

修复方案:

  • 在测试逻辑中通过Hardhat Runtime Environment获取ethers实例;
  • 将sendValue的定义移至beforeEach内部,确保环境初始化后再调用工具方法。

修正后的测试代码片段:

let fundMe
let mockV3Aggregator
let deployer
let sendValue

beforeEach(async () => {
    deployer = (await getNamedAccounts()).deployer
    await deployments.fixture(["all"])
    // 正确获取Hardhat环境内的ethers实例
    const ethers = require("hardhat").ethers
    sendValue = ethers.utils.parseEther("1")
    // 获取对应地址的signer实例
    const signer = await ethers.getSigner(deployer)
    // 正确传入getContractAt的参数:合约名、地址、signer
    fundMe = await ethers.getContractAt("FundMe", deployer, signer)
    mockV3Aggregator = await ethers.getContractAt(
        "MockV3Aggregator",
        deployer,
        signer
    )
})

2. Cannot read properties of undefined (reading 'getContract') 错误

错误原因:

  • ethers.getContractAt参数顺序错误:第二个参数应为合约地址,第三个参数才是signer实例,你之前直接传入deployer地址导致方法调用异常;
  • 未明确获取signer对象,Hardhat合约交互需要绑定具体的signer实例。

修复方案:

  • 通过ethers.getSigner(deployer)获取对应地址的signer实例;
  • 调用getContractAt时严格遵循参数顺序:合约名称/ABI、合约地址、signer实例。

二、Verify工具代码修复

你的verify代码存在两处关键问题:

1. 错误捕获逻辑失效

当前代码中catch (e) {}直接吞掉错误,导致后续无法判断错误类型;且错误判断语句在catch块外部,此时e未定义,无法执行逻辑。

2. 参数名拼写错误

Hardhat的verify:verify任务中,构造函数参数的键名是小写开头的constructorArguments,你写成了大写开头的ConstructorArguments,会导致验证请求失败。

修正后的verify代码:

const { run } = require("hardhat")

async function verify(contractAddress, args) {
    console.log("Verifying contract..")
    try {
        await run("verify:verify", {
            address: contractAddress,
            constructorArguments: args, // 修正参数名大小写
        })
    } catch (e) {
        // 将错误判断逻辑移至catch块内部
        if (e.message.toLowerCase().includes("already verified")) {
            console.log("Already Verified")
        } else {
            console.log(e)
        }
    }
}

module.exports = { verify }

内容的提问来源于stack exchange,提问作者Anooj Patnaik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:01:36