Объект MetaMask Web3 не поддерживает синхронные методы, такие как eth_sendTransaction, без параметра обратного вызова - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть оплачиваемая функция в смарт-контракте с именем 'gameDeposit', где пользователю необходимо внести eth для участия в игре, но когда я вызываю ее с помощью web3 javascript api, это выдает мне непогашенную ошибку

inpage.js:1 Uncaught (in promise) Error: The MetaMask Web3 object does not support synchronous methods like eth_sendTransaction without a callback parameter
        const Abi = [{ABI}];
        const contractAbi = web3.eth.contract(Abi);
        const myContract = contractAbi.at("0x3....");
        const amountEth = '0.01';
        console.log(myContract);
        const gameID = '10';
        myContract.gameDeposit(gameID).send({
            from: web3.eth.accounts[0],
            value: web3.toWei(amountEth, 'ether')
        },(error , result) => {
            if(!error)
                console.log(result);
            else
                console.error(error)
        })
    })

1 Ответ

0 голосов
/ 06 ноября 2019

У меня есть решение. в функции gameDeposit не должно быть параметров, параметр должен быть в .sendTransaction ().

     myContract.gameDeposit.sendTransaction(gameID,{
            from:   web3.eth.accounts[0],
             value: 1000000000000000
         },function(error , result){
             if(!error)
                 console.log(result);
             else
                 console.log(error.code)
        })
...