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

Lesson7执行yarn hardhat deploy --tags mocks报构造函数参数错误

问题根因

执行yarn hardhat deploy --tags mocks抛出Error: expected 0 constructor arguments, got 2,本质是部署逻辑给目标Mock合约的构造函数传入了2个参数,但当前项目引用的Mock合约构造函数没有定义任何入参,参数数量不匹配。
绝大多数该场景下的触发原因是**@chainlink/contracts依赖版本与课程使用版本不一致**:

  • 课程演示时使用的是v0.2.2版本的@chainlink/contracts,该版本下MockV3Aggregator构造函数明确要求传入2个参数:喂价小数位数、初始价格值,和课程编写的部署传参逻辑匹配。
  • 安装依赖时如果不指定版本,yarn会默认拉取最新版依赖,新版依赖中Mock合约的路径、构造函数定义都做了调整,部分路径下的测试Mock合约不需要传入构造参数,就会触发该报错。
    少数情况是合约导入路径错误,误引入了接口类文件或其他无构造参数的同名合约。
解决步骤
  1. 卸载当前不匹配的chainlink依赖
yarn remove @chainlink/contracts
  1. 安装与课程完全对齐的指定版本依赖
yarn add --dev @chainlink/contracts@0.2.2
  1. 核对部署脚本中Mock合约的导入路径,确保为该版本下的正确测试合约路径,不要导入接口文件:
import "@chainlink/contracts/src/v0.6/tests/MockV3Aggregator.sol";
  1. 重新执行部署命令即可正常部署
yarn hardhat deploy --tags mocks

如果不想降级依赖版本,可以直接打开本地node_modules/@chainlink/contracts目录下对应的Mock合约文件,查看其构造函数的实际参数定义,调整部署脚本的传参数量和内容即可,但该方法后续可能遇到其他和课程代码不兼容的问题,优先推荐锁版本对齐课程环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:21:18