运行npx hardhat compile出现OpenZeppelin相关HH606编译错误求助
报错根因
你的hardhat.config.js里Solidity版本配置格式错误:
- Hardhat配置的
solidity.version字段必须填确切的编译器版本号,不能加Solidity pragma语法里的范围符^,也不能加末尾的分号;。你当前填写的'^0.8.9;'是非法值,Hardhat无法识别到可用编译器,才抛出HH606版本不匹配错误。 - 开头提示的版本不完全支持警告,也是因为配置里的版本字符串带了多余符号,解析异常导致的误报。
- 你贴出的配置文件末尾缺少闭合花括号,属于语法错误,也会导致配置加载异常。
修复操作
- 修改
hardhat.config.js配置,修正版本号、补全闭合括号,参考如下:
module.exports = { solidity: { version: '0.8.9', // 移除^和末尾分号,填写确切版本 settings: { optimizer: { enabled: true, runs: 200 } } } }
- 你不需要修改OpenZeppelin依赖文件里的Solidity pragma声明:0.8.9版本编译器向下兼容所有
^0.8.0、^0.8.1范围的合约,只要配置的固定版本号落在依赖声明的版本区间内就可以正常编译。 - 清除缓存后重新编译:
npx hardhat clean npx hardhat compile
修复完成后重新执行编译命令,版本不匹配报错和版本支持警告都会消失,可正常完成合约编译。
内容的提问来源于stack exchange,提问作者Ítalo Maciel
相关产品推荐
相关产品推荐

