Truffle执行truffle migrate提示unsupported compiler错误如何解决?
错误原因
该错误由Truffle v5.4.11版本读取solidity编译器配置时解析失败导致,常见触发原因包括solc版本配置格式错误、旧编译缓存携带异常元数据、Truffle与编译器版本不兼容三类。
修复步骤
- 修正
truffle-config.js编译器配置,不要填写完整的带环境标识的solc版本字符串,仅保留三位版本号即可,配置参考如下:
module.exports = { networks: { // 你的链配置内容 }, compilers: { solc: { version: "0.5.16", settings: { optimizer: { enabled: true, runs: 200 } } } } }
- 清理历史编译缓存,删除你配置的
D:\Projects\ANIS\Decentralized_Bank\src\truffle_abis目录下所有旧产物,依次执行强制全量编译和重置迁移命令:
truffle compile --all truffle migrate --reset
- 若上述操作仍报错,可选择适配版本解决已知兼容问题:
- 降级Truffle到无该bug的v5.3.14版本:执行
npm install -g truffle@5.3.14,完成后重新执行迁移命令 - 升级solidity编译器到0.8.x版本,同步修改合约代码适配新编译器语法规则
- 降级Truffle到无该bug的v5.3.14版本:执行
- 检查本地是否安装了全局solc编译器导致冲突,可在
truffle-config.js的solc配置项中新增docker: false参数,强制使用Truffle内置的solc版本执行编译迁移。
内容的提问来源于stack exchange,提问作者johnme
相关产品推荐
相关产品推荐

