Ich erhalte den Fehler Error: Invalid number of arguments to Solidity function
für den Ersteller meines Vertrages und habe keine Ahnung warum.
Ich habe gerade ein Upgrade auf Truffle 4.0.0 beta
und die truffle develop
Testumgebung anstelle von testrpc
. Diese Tests haben früher bestanden, aber jetzt geben sie mir Fehler.
Vertragskonstrukteur
function MyContract(
bytes _eventName,
bytes32[] _eventResultNames,
uint256 _eventBettingEndBlock,
uint256 _decisionEndBlock,
uint8 _averageBlockTime,
uint256 _arbitrationOptionMinutes)
public
payable
{
...
}
Mokka-Testklasse
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 });
});
Fehlermeldung
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>
Wie behebe ich diesen Fehler?
Löschen Sie Ihren Build-Ordner und führen Sie dann den Befehl aus. Der Reset-Befehl könnte für einige funktionieren, für mich nicht, könnte eine Mac-Sache sein. npm run truffle migrate --reset --compile-all
Ich finde, dass es am besten funktioniert, wenn Truffle lokal und nicht global im Ordner ausgeführt wird, da die Beta und verschiedene Versionen in letzter Zeit schnell aktualisiert werden. wenn Sie den globalen Ansatz bevorzugen, versuchen Sie es truffle migrate --reset --compile-all
Hallo aus der Zukunft und der Vergangenheit!
Wenn Sie sich im Beispielprojekt von Hardhat befinden und Ihren Greeter.sol-Vertrag angepasst haben [vielleicht um einen ERC-721-Vertrag bereitzustellen] und jetzt versuchen, sample-script.js auszuführen, und es jetzt mit fehlschlägt
Grund: 'zu viele Argumente: im Vertragskonstruktor'
Gehen Sie in /sample-script.js zu
const greeter = await Greeter.deploy("Hello, Hardhat!");
und entfernen Sie das Argument wie folgt:
const greeter = await Greeter.deploy();
Ich habe dieses Problem gestern erlebt. Es scheint ein Fehler in der Truffle 4.0.0 Beta zu sein. Ich habe ein Rollback auf die neueste stabile Version 3.4.11 durchgeführt und das Problem wurde behoben.
npm uninstall -g truffle
npm install -g truffle
BEARBEITEN: Das Projekt muss neu erstellt/neu bereitgestellt werden:
truffle migrate --reset --compile-all
truffle migrate --reset --compile-all
. Ich denke, die JSON-Build-Datei muss neu generiert werden.truffle migrate --reset --compile-all
hat funktioniert! Danke dir! Irgendwie hat ein Anruf truffle compile -all
dann truffle migrate --reset
nichts gebracht...Leider hat die oben vorgeschlagene Antwort nicht funktioniert. Versuchen Sie, den Erstellungsordner zu löschen, und kompilieren Sie dann die Bereitstellung
truffle migrate --reset
Ich hatte das gleiche Problem, der kompilierte Code ist beschädigt. Es funktioniert nur beim ersten Mal und die nachfolgende Kompilierung beschädigt den Build. Ich hoffe es hilft.
Versuchen Sie, den Build-Ordner zu löschen und auszuführen
truffle migrate --reset
Ich hatte das gleiche Problem, der kompilierte Code war beschädigt. Hoffe das hilft.
Der Nomade
--compile-all
es tatsächlich neu kompiliert wird, lol.