错误:Truffle 当前使用的是 solc 0.5.16,但您的一个或多个合约指定“pragma solidity ^0.8.0”

Posted

技术标签:

【中文标题】错误:Truffle 当前使用的是 solc 0.5.16,但您的一个或多个合约指定“pragma solidity ^0.8.0”【英文标题】:Error: Truffle is currently using solc 0.5.16, but one or more of your contracts specify “pragma solidity ^0.8.0” 【发布时间】:2021-09-05 06:18:18 【问题描述】:

这是错误的照片 - https://gyazo.com/2f5ea2f50cc1d4ef5eea2f21d0e04fe7

我所有的合约都使用 ^0.8.0 pragma。我的 truffle-config 也使用与您在此处看到的相同的版本 - https://gyazo.com/1ec8b28ca48902c091004f8659cf678d

请帮忙。非常感谢。

【问题讨论】:

【参考方案1】:

省略“^”。不是version:"^0.8.0"

compilers: 
       solc: 
           version: "0.8.0"  
       

【讨论】:

谢谢,明确的版本声明成功了!【参考方案2】:

@Yilmaz 是正确的,需要修改版本。将 truffle-config.js 文件更改为正确的编译器版本。确保您有一个版本集。我有同样的错误,因为没有设置版本。如果您的文件如下所示:

compilers: 
  solc: 
    // version: "0.5.1",    // Fetch exact version from solc-bin (default: truffle's version)
    // docker: true,        // Use "0.5.1" you've installed locally with docker (default: false)
    // settings:           // See the solidity docs for advice about optimization and evmVersion
    //  optimizer: 
    //    enabled: false,
    //    runs: 200
    //  ,
    //  evmVersion: "Byzantium"
    // 

把它改成这样:

compilers: 
  solc: 
    version: "^0.8.0"

【讨论】:

【参考方案3】:

从 truffle-config.js 中取消注释这一行:

compilers: 
  solc: 
    version: "0.8.10",  // <-- this one
    .
    .
    ...

【讨论】:

以上是关于错误:Truffle 当前使用的是 solc 0.5.16,但您的一个或多个合约指定“pragma solidity ^0.8.0”的主要内容,如果未能解决你的问题,请参考以下文章

用Solidity在Truffle上构建一个HelloWorld智能合约

Solidity,Solc 错误:无法构造包含(嵌套)映射的结构

js 中的“solc.loadRemoteVersion”错误

truffle的调用nodeJs的问题

区块链-智能合约工程师第四篇:Truffle框架安装和介绍(Windows)

区块链-智能合约工程师第四篇:Truffle框架安装和介绍(Windows)