Ошибка: неверное количество аргументов для функции 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>

Как исправить эту ошибку?

Ответы (5)

Удалите папку сборки, затем запустите команду. Команда сброса может работать для некоторых, но не для меня, может быть, для Mac. npm run truffle migrate --reset --compile-all Я считаю, что это лучше всего работает при локальном запуске truffle в папке, а не глобально, из-за того, что бета-версия и различные версии в последнее время быстро обновляются. если вы предпочитаете глобальный подход, попробуйте truffle migrate --reset --compile-all

Да, я тоже это понял в конце концов. Я не думаю, что на --compile-allсамом деле перекомпилирует его, лол.

Привет из будущего и прошлого!

Если вы находитесь в примере проекта Hardhat и настроили свой контракт Greeter.sol [возможно, для развертывания контракта ERC-721] и теперь пытаетесь запустить sample-script.js, и теперь он терпит неудачу с

причина: "слишком много аргументов: в конструкторе контракта"

Перейдите в /sample-script.js, чтобы

  const greeter = await Greeter.deploy("Hello, Hardhat!");

и удалите аргумент так:

  const greeter = await Greeter.deploy();

Я столкнулся с этой проблемой вчера. Похоже, это ошибка в бета-версии Truffle 4.0.0. Я откатился на последнюю стабильную версию 3.4.11, и это решило проблему.

npm uninstall -g truffle

npm install -g truffle

РЕДАКТИРОВАТЬ: проект должен быть перестроен/перераспределен:

truffle migrate --reset --compile-all
На самом деле я уже пытался откатиться, но мои тесты все еще не проходят. Вы делали что-то особенное, кроме этих двух команд?
Я просто перезапускаю миграцию с параметром reset и компилирую все: truffle migrate --reset --compile-all. Я думаю, что файл сборки JSON должен быть восстановлен.
truffle migrate --reset --compile-allработал! Спасибо! Звонок почему- truffle compile -allто truffle migrate --resetне помог...

К сожалению, предложенный выше ответ не сработал. Попробуйте удалить папку сборки, а затем скомпилируйте развертывание

truffle migrate --reset

У меня была такая же проблема, скомпилированный код поврежден. Он работает только в первый раз, а последующая компиляция портит сборку. Надеюсь, это поможет.

Попробуйте удалить папку сборки и запустить

truffle migrate --reset

У меня была такая же проблема, скомпилированный код был поврежден. Надеюсь это поможет.