我在我的项目中安装了最新版本的松露、solc、node以及openzeppelin-solidity库的新版本。
将块菌-config.js更改为使用新的solc版本。我的合同是从openzeppelin图书馆继承的。现在,当我运行松露编译时,它会给出以下错误。
错误解析openzeppelin-solidity/contracts/ownership/Ownable.sol: ParsedContract.sol:8:1: ParserError:源文件需要不同的编译器版本(当前编译器为0.5.2+commit.1df8f40c.Emscripten.clang -注意,夜间构建被认为严格少于发布的版本契约所有者{^-^)
以下是我所使用的所有内容的版本:
$truffle版本Trufferv5.0.0(核心: 5.0.0)稳固性- 0.5.2 (solc-js) Node v11.4.0
$ solc -Version solc,solidity编译器命令行接口版本: 0.5.2+commit.1df8f40c.Linux.g++
openzeppelin-solidity package.json有"_from":"openzeppelin-solidity","_id":"openzeppelin-solidity@2.0.0",.版本:"2.0.0“
现在,Ownable契约使用编译器版本^0.4.24,这将是库中所有契约的情况。
知道为什么会发生这种情况,以及如何解决这个问题吗?
发布于 2018-12-27 12:27:41
当前版本的(2.0.0)依赖solc版本0.4.24。
当前版本的松露(5.0.0)依赖solc版本0.5.0。
在solc 0.4.x和solc 0.5.x之间有一些破坏性的更改。
以前版本的松露(4.1.14)依赖solc版本0.4.24。
因此,为了与松露一起使用open,在您的package.json文件中设置:
"devDependencies": {
"truffle": "4.1.14",
"openzeppelin-solidity": "2.0.0",
...
}或者,在接下来的松露5.0.0中,您可以选择所需的solc版本。
例如,为了将块菌配置为使用solc 0.4.24,在truffle-config.js中添加以下内容:
compilers: {
solc: {
version: "0.4.24"
}
}请参阅如何将您自己的编译器版本说明中的更多细节。
https://ethereum.stackexchange.com/questions/64654
复制相似问题