我正在构建一个众筹区块链应用程序,我得到了上面的错误。
Uncaught(in promise)错误:函数“getDonators”需要% 1个参数,但提供了未定义的参数。需要函数签名:contract.call(“getDonators”,_id:BigNumberish):Promise〈string[],BigNumber[]〉
这是我调用getDonators函数的部分代码
const getDonations = async (pId) => {
const donations = await contract.call('getDonators', pId); //HERE!
const numberOfDonations = donations[0].length;
const parsedDonations = [];
for(let i = 0; i < numberOfDonations; i++) {
parsedDonations.push({
donator: donations[0][i],
donation: ethers.utils.formatEther(donations[1][i].toString())
})
}
return parsedDonations;
}
这是Solidity文件中的代码
function getDonators(uint256 _id) view public returns (address[] memory, uint256[] memory) {
return (campaigns[_id].donators, campaigns[_id].donations);
请帮助我解决此问题。我是否没有正确传递参数?
我试着用不同的方式传递参数,但它并没有真正解决这个问题。我还试着用不同的方式调用函数(在.sol文件中),如下所示:
await contract.donateToCampaign(pId, {
value: ethers.utils.parseEther(amount.toString())
});
2条答案
按热度按时间jvidinwx1#
我在你的代码中看到的可能的错误来自这一行:
const getDonations = async(pId)=〉{
pId
最初可能是undefined
。尝试console.log
以查看它是否实际上是整数vojdkbi02#
UPD:我实际上解决了这个错误,将错误的代码行替换为:
https://portal.thirdweb.com/typescript/sdk.smartcontract.call