Solidity

我什至沒有呼叫的函式出現錯誤

  • July 30, 2021

我遇到了一個我不明白的錯誤,而且我不記得在程式碼中的任何地方定義過,有人可以解釋一下問題是什麼嗎?非常感謝。

properties_1.defineReadOnly(this, "fragments", abi.map(function (fragment) {
                                                          ^

TypeError: Cannot read property 'map' of undefined

這是我的程式碼:

const { ethers } = require("hardhat");
const {abi} = require('./build/abi/mycontract.json');
require('dotenv').config();
const { ALCHEMY_API_KEY, ACCOUNT2_PRIVATE_KEY, ACCOUNT2_PUBLIC_KEY,CONTRACT_ADDRESS} = process.env;


const provider = ethers.getDefaultProvider('rinkeby', {
   alchemykey: ALCHEMY_API_KEY
});
const wallet = new ethers.Wallet.createRandom();
const walletWithProvider = wallet.connect(provider);

const mycontract = new ethers.Contract(CONTRACT_ADDRESS,abi,walletWithProvider);

async function stakeliquidity(){
    await contractW.stakeCombinedLiquidity()
   .then(() => {
       console.log('staked succesfully');
   }).catch(() => console.log('transaction error'));
console.log('function called.');
}
stakeliquidity();
//Unstake

TLDR;在您的第abi2 行 ( const {abi} = ..) 中聲明的可能是未定義的。您可以通過控制台日誌記錄來驗證它。

Cannot read property '*' of undefined如果您使用庫,則在程式碼中的某個位置會出現錯誤,您錯誤地傳遞了未定義的值。此外,這表示property 'map',這意味著庫函式需要將值作為數組。幸運的是,您還有一個觸發此錯誤的程式碼片段,它包含abi.map,並且變數名稱表明它是abi,儘管這是來自 ethers.js 程式碼庫而不是您的程式碼庫。

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