Truffle

在松露中設置特定的編譯器版本,但仍然得到“源文件需要不同的編譯器版本”錯誤

  • July 9, 2021

我在第一行得到“源文件需要不同的編譯器版本(目前編譯器是 0.8.6+commit.11564f7e.Emscripten.clang)”:

pragma solidity ^0.7.0;

在 truffle-config.js 中,我設置了一個特定的編譯器版本:

 compilers: {
   solc: {
     version: "0.7.6",    // 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"
     // }
   }
 },

但我仍然得到同樣的錯誤(0.8.6+)。我該如何解決?

謝謝

我最近遇到了這個錯誤。

發生這種情況是因為在 VS Code 工作區上配置的編譯器版本與您想要的版本不同。

要解決這個問題,只需右鍵點擊錯誤並選擇選項

Solidity: Change workspace compiler version (Remote)

它將打開一個包含可用版本的下拉列表,您只需選擇 0.7.6。

您可以在 Solidity VSCode 擴展儲存庫 https://github.com/juanfranblanco/vscode-solidity/上查看此資訊

如果您要導入其他合約,這些合約也需要支持您在主合約上使用的相同 pragma solidity 版本。

另一件事是松露的問題,您使用的 solc 版本與您在嘗試執行compile命令時下載的版本不同。這曾經發生過,但這可能是問題所在。要修復它,您需要進入 trufflenode_modules包並安裝solc所需的版本。或者您可以從頭開始在全球範圍內重新安裝松露,看看它是否會自行修復。

引用自:https://ethereum.stackexchange.com/questions/102942