Solidity
錯誤:Solidity 函式的參數數量無效
我收到
Error: Invalid number of arguments to Solidity function
契約建構子的錯誤,不知道為什麼。我剛剛升級到
Truffle 4.0.0 beta
並使用truffle develop
測試環境而不是testrpc
. 這些測試過去可以通過,但現在它們給了我錯誤。合約建構子
function MyContract( bytes _eventName, bytes32[] _eventResultNames, uint256 _eventBettingEndBlock, uint256 _decisionEndBlock, uint8 _averageBlockTime, uint256 _arbitrationOptionMinutes) public payable { ... }
摩卡測試班
const params = { _eventName: "test", _eventResultNames: ["first", "second", "third"], _eventBettingEndBlock: 100, _decisionEndBlock: 120, _averageBlockTime: 10, _arbitrationOptionMinutes: 1440 }; const baseReward = Utils.getBigNumberWithDecimals(10, nativeDecimals); let myContract; beforeEach(async function() { myContract = await MyContract.new(...Object.values(params), { from: creator, value: baseReward }); });
錯誤資訊
1) Contract: MyContract New MyContract inits the MyContract with the correct values: Error: Invalid number of arguments to Solidity function at Object.InvalidNumberOfSolidityArgs (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:43993:16) at SolidityFunction.validateArgs (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:357969:22) at SolidityFunction.toPayload (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:357985:10) at SolidityFunction.call (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:358026:24) at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:326504:16 at Promise (<anonymous>) at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:326495:18 at <anonymous>
如何修復此錯誤?
刪除您的建構文件夾,然後執行該命令。重置命令可能對某些人有用,對我沒用,可能是 Mac 的事情。
npm run truffle migrate --reset --compile-all
我發現它在本地執行 truffle 到文件夾而不是全域時效果最好,因為 beta 和不同版本最近更新得很快。如果您更喜歡全域方法,請嘗試truffle migrate --reset --compile-all
來自未來和過去的你好!
如果您在 Hardhat 的範例項目中並且已經自定義了 Greeter.sol 合約
$$ perhaps to deploy an ERC-721 contract $$現在正在嘗試執行 sample-script.js 並且現在失敗了
原因:‘參數太多:在契約建構子中’
進入 /sample-script.js 到
const greeter = await Greeter.deploy("Hello, Hardhat!");
並像這樣刪除參數:
const greeter = await Greeter.deploy();