Recibo el error Error: Invalid number of arguments to Solidity function
para el constructor de mi contrato y no tengo idea de por qué.
Acabo de actualizar Truffle 4.0.0 beta
y usar el truffle develop
entorno de prueba en lugar de testrpc
. Estas pruebas solían pasar, pero ahora me están dando errores.
constructor del contrato
function MyContract(
bytes _eventName,
bytes32[] _eventResultNames,
uint256 _eventBettingEndBlock,
uint256 _decisionEndBlock,
uint8 _averageBlockTime,
uint256 _arbitrationOptionMinutes)
public
payable
{
...
}
Clase de prueba de moca
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 });
});
Mensaje de error
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>
¿Cómo soluciono este error?
Elimine su carpeta de compilación, luego ejecute el comando. El comando de reinicio podría funcionar para algunos, no para mí, podría ser una cosa de Mac. npm run truffle migrate --reset --compile-all
Creo que funciona mejor cuando se ejecuta truffle localmente en la carpeta en lugar de globalmente, debido a que la versión beta y las diferentes versiones se actualizaron rápidamente recientemente. si prefiere el enfoque global intente truffle migrate --reset --compile-all
¡Hola desde el futuro y el pasado!
Si está en el proyecto de muestra de Hardhat y ha personalizado su contrato Greeter.sol [tal vez para implementar un contrato ERC-721] y ahora está intentando ejecutar sample-script.js y ahora está fallando con
motivo: 'demasiados argumentos: en el constructor del contrato'
Vaya a /sample-script.js para
const greeter = await Greeter.deploy("Hello, Hardhat!");
y eliminar el argumento como tal:
const greeter = await Greeter.deploy();
Ayer experimenté este problema. Parece ser un error en la versión beta de Truffle 4.0.0. Retrocedí a la última versión estable 3.4.11 y solucioné el problema.
npm uninstall -g truffle
npm install -g truffle
EDITAR: El proyecto necesita ser reconstruido/reimplementado:
truffle migrate --reset --compile-all
truffle migrate --reset --compile-all
. Creo que el archivo de compilación JSON debe regenerarse.truffle migrate --reset --compile-all
¡trabajó! ¡Gracias! Por alguna razón, llamar truffle compile -all
entonces truffle migrate --reset
no lo arregló...Lamentablemente, la respuesta sugerida anteriormente no funcionó. Intente eliminar la carpeta de compilación y luego compile la implementación
truffle migrate --reset
Tuve el mismo problema, el código compilado está dañado. Funciona solo por primera vez y la compilación posterior corrompe la compilación. Espero eso ayude.
Intente eliminar la carpeta de compilación y ejecute
truffle migrate --reset
Tuve el mismo problema, el código compilado estaba dañado. Espero que esto ayude.
el nómada
--compile-all
en realidad lo recompile jajaja.