Fehler: Ungültige Anzahl von Argumenten für Solidity-Funktion

Ich erhalte den Fehler Error: Invalid number of arguments to Solidity functionfür den Ersteller meines Vertrages und habe keine Ahnung warum.

Ich habe gerade ein Upgrade auf Truffle 4.0.0 betaund die truffle developTestumgebung 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?

Antworten (5)

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

Ja, das habe ich irgendwann auch herausgefunden. Ich glaube nicht, dass --compile-alles tatsächlich neu kompiliert wird, lol.

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
Ich habe tatsächlich schon versucht, ein Rollback durchzuführen, aber meine Tests bestehen immer noch nicht. Hast du außer diesen beiden Befehlen irgendetwas Besonderes gemacht?
Ich führe die Migration einfach mit dem Parameter reset und compile-all erneut aus: truffle migrate --reset --compile-all. Ich denke, die JSON-Build-Datei muss neu generiert werden.
truffle migrate --reset --compile-allhat funktioniert! Danke dir! Irgendwie hat ein Anruf truffle compile -alldann truffle migrate --resetnichts 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.