Solidity

未擷取的錯誤:Solidity 函式的參數數量無效

  • February 20, 2019

函式 TriggerContract() { var account = getAccounts(); var test = web3.eth.defaultAccount;

   console.log(account);
   var q = document.getElementById("Quantity").value;
   var u = toHex(document.getElementById("Unit").value);
   var m = toHex(document.getElementById("Material").value);
   var x = contractAddress.countMaterials(function(err, result) {
         if (err) {
           console.log(err)
         } else {
           console.log("Hey")
         }
       });
   console.log(x);
   contractAddress.setMaterial((test,q, u, m) => {
         if (err) {
           console.log(err)
         } else {
           console.log("YES")
         }
       });
   Reset();
 }

我在下一行收到“未擷取的錯誤:Solidity 函式的參數數量無效”,但不知道為什麼。參數的數量應該是正確的。任何建議將不勝感激。

contractAddress.setMaterial((test,q, u, m)

function setMaterial(address _address, uint64 _weight, bytes16 _material, bytes16 _unit) public{
       materials[_address] = Material(_address, _weight, _unit, _material);

       materialAccounts.push(_address) -1;
       emit materialAdded(_materialID);
   }

我相信這是由於沒有適當的回調函式。請嘗試以下格式,也嘗試沒有結果部分(只有錯誤)。

functionname  (variables,function (error, result) {

             if (error) {
                 console.log(error)
             }
             else {
           console.log("yes")

             }

改變這個:

   contractAddress.setMaterial((test,q, u, m) => {

對此:

   contractAddress.setMaterial(test,q, u, m).then(function(result, err) => {

由於我通常使用回調函式而不是回調函式來解決 Promise await,因此我不能 100% 確定function(result, err). 您可能應該function(err)改用。

引用自:https://ethereum.stackexchange.com/questions/67197