2

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

但是当我使用时console.log(web3.eth),我会在控制台中看到这里的所有数据图像

有人知道为什么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>

4

3 回答 3

3

我解决了问题,使用:

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

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

于 2018-01-27T11:00:40.540 回答
1

要获取当前连接的帐户,您需要编写,

const web3 = new Web3(window.ethereum);
web3.eth.requestAccounts().then(accounts => console.log(accounts));
于 2021-11-20T09:42:56.690 回答
0

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

在此处输入图像描述

像这样获取帐户:

var account = null;
web3.eth.getAccounts(async function(error, accounts) {
  if (error == null && accounts.length > 0) {
      account = accounts[0];
   }
}
于 2019-09-19T08:40:06.173 回答