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

Hardhat测试报错:TypeError无法读取undefined的getBalance属性

解决Hardhat测试中Cannot read properties of undefined (reading 'getBalance')错误

错误原因

报错核心是代码中错误解构了waffle.provider:

const { provider } = waffle.provider;

waffle.provider本身就是一个Provider实例,并非包含provider属性的对象。解构操作会试图从waffle.provider中读取provider属性,结果必然是undefined,调用undefined.getBalance()就会触发该错误。

另外测试用例里存在笔误:console.log(BUSD_WHALES);中的变量名应为BUSD_WHALE(多了个s),后续运行也会报错,建议一并修正。

解决方案

1. 修正Provider的获取方式

将错误的解构代码替换为以下任意一种:

  • 使用waffle的provider:
    const provider = waffle.provider;
    
  • 或直接使用ethers内置的provider(更推荐,无需依赖waffle):
    const provider = ethers.provider;
    

2. 修正变量名笔误

将测试用例中的BUSD_WHALES改为BUSD_WHALE。

修正后的完整代码

const { expect, assert } = require("chai");
const { ethers, waffle } = require("hardhat");
const { impersonateFundErc20 } = require("../utils/utilities");
const { abi } = require("../artifacts/contracts/interfaces/IERC20.sol/IERC20.json");

// 修正provider获取方式
const provider = waffle.provider;
// 或者用 const provider = ethers.provider;

describe("FlashSwap Contract", ()=>{
    let FLASHSWAP, BORROW_AMOUNT, FUND_AMOUNT, initialFundingHuman, txArbitrage, gasUsedUSD;
    const DECIMALS = 18;
    const BUSD_WHALE = "0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503";
    const BUSD = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56";
    const CAKE = "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82";
    const USDT = "0x55d398326f99059fF775485246999027B3197955";
    const CROX = "0x2c094F5A7D1146BB93850f629501eB749f6Ed491";

    const BASE_TOKEN_ADDRESS = BUSD;
    const tokenBase = new ethers.Contract(BASE_TOKEN_ADDRESS, abi, provider);

    beforeEach(async()=>{
        [owner] = await ethers.getSigners();
        const whale_balances = await provider.getBalance(BUSD_WHALE);
        expect(whale_balances).not.equal("0");
    });

    it("test", async () =>{
        // 修正笔误
        console.log(BUSD_WHALE);
    });
});

内容的提问来源于stack exchange,提问作者Lokesh Tuli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:30:52