Solidity

帶有“應付地址”和編譯器版本的松露測試問題

  • March 16, 2019

我正在嘗試truffle test使用使用pragma solidity 0.4.24;. 雖然我能夠使用 部署契約truffle migrate,但在執行時出現以下錯誤truffle test

Using network 'development'.


Compiling your contracts...
===========================
Error: CompileError: Error parsing truffle/DeployedAddresses.sol: ParsedContract.sol:4:55: ParserError: Expected ',' but got 'payable'
 function Marketplace() public pure returns (address payable) { return 0x6395927945EA39aDD6B1E04144f1e1324B30DeFC; }
                                                     ^-----^
Compilation failed. See above.
   at async.whilst.error (/usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle-compile/profiler.js:369:1)
   at /usr/local/lib/node_modules/truffle/build/webpack:/~/async/dist/async.js:969:1
   at next (/usr/local/lib/node_modules/truffle/build/webpack:/~/async/dist/async.js:5222:1)
   at Promise.all.then.results (/usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle-compile/profiler.js:351:1)
   at <anonymous>
Truffle v5.0.7 (core: 5.0.7)
Node v8.12.0

truffle/DeployedAddresses.sol: ParsedContract.sol:4:55不是我寫的程式碼,也不是我項目的一部分。我懷疑這個錯誤可能是因為 Truffle正在執行solidity 0.4.24 來編譯我的合約,但是它用於執行內部測試的任何東西都在執行solidity 0.5。有沒有辦法驗證/改變這個?

以下是truffle.js主目錄中的內容:

module.exports = {
 migrations_directory: "./migrations",
 networks: {
   development: {
     host: "localhost",
     port: 8545,
     network_id: "*" // Match any network id
   }, 
// ... Other configs specified here, removed because irrelevant
// to SO question ... 
compilers: {
 solc: {
   version: "0.4.24",  
   }
 },
 solc: {
   optimizer: {
     enabled: true,
     runs: 500
   }
 } 
};

以及`truffle.js``/test下的內容:

module.exports = {
 // See <http://truffleframework.com/docs/advanced/configuration>
 // for more about customizing your Truffle configuration!
 networks: {
   development: {
     host: "127.0.0.1",
     port: 7545,
     network_id: "*" // Match any network id
   }
 }, 
 compilers: {
 solc: {
   version: "0.4.24",  
   }
 }
};

我有.sol.js測試,兩者都不會執行(單獨或作為執行所有測試的一部分truffle test)。

這似乎是 Truffle 中的一個錯誤。我在他們的 Github 上打開了一個問題,他們創建了一個 PR 來解決它。嘗試更新的松露版本後,我將更新此答案。

我認為您需要將編譯器更改為version: "0.5.0",或更新版本(但早於 0.6.0),並使所有程式碼與該編譯器版本兼容,如果您需要使用此DeployedAddresses.sol動態生成的庫(請參閱

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