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

Hardhat部署合约报TS2345:value不存在于Overrides类型如何解决?

错误原因
  • 你的WavePortal合约构造函数未添加payable修饰符:Solidity规定只有带payable标记的函数(包含构造函数)才能接收ETH转入。你在部署时传入value参数尝试给合约转0.1ETH,但构造函数本身不支持收ETH,TypeScript的类型校验会直接拦截该非法操作,抛出你看到的类型不匹配报错。
  • 若你使用的是ethers v6版本,旧版本的传参、工具函数调用方式也会触发同类报错,你可以先检查合约构造函数的修饰符问题。
解决步骤
  1. 修改Solidity合约的构造函数,添加payable修饰符
// 调整后的构造函数
constructor() payable {
    console.log("Hello, Multiverse... I am Smart Contract WavePortal");
}
  1. 重新编译合约,更新类型定义文件
npx hardhat compile
  1. 重新执行部署脚本即可
npx hardhat run scripts/run.ts
额外兼容方案(仅针对ethers v6版本)

如果完成上述操作后仍报错,说明你使用的是ethers v6版本,需要调整部署代码的写法:

const waveContractFactory = await hre.ethers.getContractFactory("WavePortal");
// ethers v6中移除了utils层级,parseEther直接挂在ethers对象下
const waveContract = await waveContractFactory.deploy({
    value: hre.ethers.parseEther("0.1"),
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:45:04