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

Hardhat部署智能合约报错:'upload.deployed is not a function'

解决Hardhat部署合约报错:'upload.deployed is not a function'

问题核心原因

这个错误本质是ethers.js版本兼容性问题:

  • 在ethers v5及更早版本中,Upload.deploy()返回的是ContractTransaction对象,需要调用.deployed()等待部署完成并获取合约实例;
  • 但在ethers v6(Hardhat v2.19+默认集成)中,Upload.deploy()直接返回已部署完成的合约实例,.deployed()方法已被移除,调用它就会触发报错。

修复方案

根据项目使用的ethers版本选择对应修改方式:

方案1:适配ethers v6(推荐)

直接移除await upload.deployed()这一行代码,修改后的脚本如下:

const hre = require("hardhat");

async function main() {
    const Upload = await hre.ethers.getContractFactory("Upload");
    const upload = await Upload.deploy();

    // 移除deployed()调用,直接使用upload实例获取地址
    console.log("Library deployed to:", upload.address);
}

main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
});

方案2:回退到ethers v5(仅当项目依赖旧版本时使用)

如果你的项目必须依赖ethers v5,可修改package.json中的依赖版本后重新安装:

  1. 修改package.json的devDependencies:
{
  "devDependencies": {
    "@nomicfoundation/hardhat-toolbox": "^2.0.0",
    "hardhat": "^2.17.0"
  }
}
  1. 重新安装依赖:
npm install

完成后原脚本的await upload.deployed()即可正常运行。

额外排查点

  • 执行npx hardhat compile确认Upload合约编译无语法错误;
  • 检查hardhat.config.js中的网络配置,确保部署目标网络可正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:18:12