Solidity
帶有“應付地址”和編譯器版本的松露測試問題
我正在嘗試
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
動態生成的庫(請參閱此)