Web3js

未處理的拒絕(TypeError):param.map 不是函式

  • March 29, 2022

用於Web3執行事務,並得到以下錯誤:

未處理的拒絕(TypeError):param.map 不是函式未擷取(承諾中)TypeError:param.map 不是 ABICoder.push../node_modules/web3-eth/node_modules/web3-eth-abi/lib/ 中的函式index.js.ABICoder.formatParam

這是程式碼片段:

const detectEth = async () => {
   if (window.ethereum) {
     window.web3 = new web3(window.ethereum);
     await window.ethereum.enable()
   }
   else if (window.web3) {
     window.web3 = new web3(window.web3.currentProvider);
   }
   else {
     window.alert('Non-Ethereum browser detected. You should consider trying MetaMask!')
   }
 };

const mint = async () => {
   detectEth();

   const web3 = window.web3;

   const contract = new web3.eth.Contract(NFT_ABI, NFT_CONTRACT_ADDRESS, { gasLimit: "1000000" });

// This function works well
   const mintFees = await nftContract.methods.mintFees().call({
     from: accountAddress,
     to: NFT_CONTRACT_ADDRESS
   });

// ERROR coming from this line
   contract.methods.claim(index, hash, proof, id).send({
     from: accountAddress,
     value: mintFees
   }, (error, transactionHash) => {
       if (error) {
         console.log('In Error');
         console.log(error);
         hideSpinner();
       }
     });
}

感謝您的幫助。

問題是有未定義的參數。

我自己也面臨同樣的錯誤。

基本上,這裡的參數之一——索引、雜湊、證明、id——應該作為數組傳入。檢查 ABI 或塊資源管理器中的輸入類型,它會相應地顯示。

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