Truffle
請求的 EVM 版本無效和錯誤:Truffle 目前使用的是 solc 0.5.0
我開始在 youtube 上學習 Dapp 大學指南的可靠性,並且在本指南的第 20 分鐘,我遇到了 Truffle 編譯問題。
我複製了這個儲存庫:
git clone -b starter-code https://github.com/dappuniversity/defi_tutorial ./
這是本教程的 YT 連結: https ://www.youtube.com/watch?v=CgXQC4dbGUE本指南上的 Truffle 配置如下所示:
require('babel-register'); require('babel-polyfill'); module.exports = { networks: { development: { host: "127.0.0.1", port: 7545, network_id: "*" // Match any network id }, }, contracts_directory: './src/contracts/', contracts_build_directory: './src/abis/', compilers: { solc: { optimizer: { enabled: true, runs: 200 }, evmVersion: "petersburg" } } }
在指南的這一點上,編譯成功,但出現錯誤:
Error: Truffle is currently using solc 0.5.16, but one or more of your contracts specify "pragma solidity ^0.5.0
所以我去了 Truffle 文件,我發現我可以在配置中指定 solc 版本,所以我添加了
version
欄位,我的配置現在看起來像這樣:// ... compilers: { solc: { version: "0.5.0", optimizer: { enabled: true, runs: 200 }, evmVersion: "petersburg" } } // ...
我的編譯再次失敗,出現另一個錯誤,但這次是
evmVersion
:Invalid EVM version requested. Compilation failed. See above. Truffle v5.1.39 (core: 5.1.39) Node v16.9.1
現在我將 EVM 版本從
"petersburg"
to更改"byzantium"
為另一個 Compilation Faild 並出現錯誤:Error: Truffle is currently using solc 0.5.0, but one or more of your contracts specify "pragma solidity ^0.5.0
有人可以為我提供一些如何處理此錯誤的知識嗎?
將 EVM 版本從“petersburg”更改為“byzantium”並將編譯器版本更改為“0.5.0”對我有用。
您需要下載所需的編譯器版本,或更改合約的solidity 版本。