简单的 Web3 安装

问题描述

我一直在尝试使用 web3 将元掩码注入我的网站。我在我的网站中调用了 web3,如下所示,并使用本地服务器启动了该网站(VS Code 扩展,它给了我端口:5500)


    window.addEventListener('load',async () => {
      if (window.ethereum) {
        window.web3 = new Web3(ethereum);
        try {
          await ethereum.enable();
          initPayButton()
        } catch (err) {
          $('#status').html('User denied account access',err)
        }
      } else if (window.web3) {
        window.web3 = new Web3(web3.currentProvider)
        initPayButton()
      } else {
        $('#status').html('No Metamask (or other Web3 Provider) installed')
      }
    })

后来我按如下方式调用我的合同,但我遇到了麻烦。

pay() 是在我的 HTML 中单击按钮时发生的函数。它需要从我的智能合约中调用 payout() 函数,所以最初我定义了它,你可以在下面的第一行看到。


    window.contract = new window.web3.eth.Contract(
           [  abi    ],'0xC4AfE8504a711bE2D5E25b45eb72fC3f0924aB21');
        
        
        
        function pay() {

            var paymentAddress = document.getElementById("address").value;
            var val = document.getElementById("weight").value;
            var type= document.getElementById("category").value;

               
            contract.methods.payout.sendTransaction( paymentAddress,val,type )
            //updateStatus('Updated.');
        }

我收到以下错误

MetaMask no longer injects web3

Uncaught TypeError: window.web3.eth is undefined

我尝试了很多方法,但无法更进一步,请帮助我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)