获取web3.eth.accounts(MetaMask)的问题

时间:2018-01-27 10:47:59

标签: javascript ethereum web3js web3 metamask

我的MetaMask已启用,但在控制台中我看到空数组image here,当我尝试console.log(web3.eth.accounts[0])时,它返回undefined

但是当我使用console.log(web3.eth)时,我会在控制台中看到所有数据image here

有人知道为什么web3.eth.accounts[0]web3.eth.accounts不起作用吗?

<html>
    <head>
        <title>TEST</title>
    </head>
    <body>
        <script>
            window.addEventListener('load', function(){
                if( typeof web3 !='undefined'){
                    console.log('web3 detected');
                    web3 = new Web3(web3.currentProvider);                                    
                    console.log(web3.eth.accounts);
                }else{
                    alert("please install MetaMask");
                }
            });
                       
        </script>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

我解决了问题,使用:

 web3.eth.getAccounts((err, res) => {                   
                   console.log(res[0]);
});

但无论如何仍然存在问题,为什么web3.eth.accounts [0]不起作用?

答案 1 :(得分:0)

web3.eth.accounts[0]不起作用,因为web3.eth.accounts不是帐户列表,如docs中所述:

enter image description here

像这样获取帐户:

var account = null;
web3.eth.getAccounts(async function(error, accounts) {
  if (error == null && accounts.length > 0) {
      account = accounts[0];
   }
}