编译@chainlink/contracts导入的Mock文件时遇TypeError求助
问题分析与解决方案
核心原因
Solidity 0.6.0版本不支持接口多继承,但你安装的@chainlink/contracts@0.3.1中,v0.6系列的AggregatorV2V3Interface接口使用了is AggregatorInterface, AggregatorV3Interface这种多继承写法,这是0.6.0编译器不允许的语法,直接导致编译报错。
解决方法
方法1:升级Solidity 0.6系列编译器版本
Solidity从0.6.12版本开始支持接口多继承,修改Hardhat配置中的0.6.x版本为0.6.12或更高的0.6系列版本:
solidity: { compilers: [ {version: "0.8.9"}, {version: "0.6.12"}, // 替换原0.6.0版本 ] },
修改后重新编译即可。
方法2:降级Chainlink合约版本
如果必须使用Solidity 0.6.0,可降级@chainlink/contracts到v0.2.1版本(该版本的v0.6接口未使用多继承,完全兼容0.6.0):
执行命令:
npm install @chainlink/contracts@0.2.1
保持你的Mock合约导入路径不变即可正常编译。
内容的提问来源于stack exchange,提问作者dharma-kṣetre
相关产品推荐
相关产品推荐

