Web3js 通过web3.js 1.x访问metamask中的帐户

Web3js 通过web3.js 1.x访问metamask中的帐户,web3js,metamask,Web3js,Metamask,我想通过web3.js在metamask插件中检索当前选定的帐户。我想动态地做,所以当切换到另一个帐户时,它应该被打印到UI上 我正在通过以下方式导入库beta.37: 让事情变得更复杂: 在Brave web3.eth.accounts[0]中的1会将我的当前地址记录在除我的dApp之外的任何其他站点中,但在这里,它返回未定义的。 2在同一版本中,它总是返回未定义的 对我来说,当构建在web3.js 0.x上的其他DAPP使用完全相同的代码时,它如何返回未定义的代码是令人费解的 因此,我无法

我想通过web3.js在metamask插件中检索当前选定的帐户。我想动态地做,所以当切换到另一个帐户时,它应该被打印到UI上

我正在通过以下方式导入库beta.37:

让事情变得更复杂: 在Brave web3.eth.accounts[0]中的1会将我的当前地址记录在除我的dApp之外的任何其他站点中,但在这里,它返回未定义的。 2在同一版本中,它总是返回未定义的

对我来说,当构建在web3.js 0.x上的其他DAPP使用完全相同的代码时,它如何返回未定义的代码是令人费解的

因此,我无法使用以下函数动态打印当前地址:

var accountInterval = setInterval(function() {
    if (web3.eth.accounts[0] !== userAccount) {
        userAccount = web3.eth.accounts[0];
    }
}, 100);

在web3.js 1.x中,必须使用getAccounts异步方法,例如:

var accounts = await web3.eth.getAccounts();
var userAccount =accounts[0]
PS:web3.eth.accounts[0]在其他DAPP中显示您的帐户,因为它们仍然使用旧的web3.js版本,很可能是Metamask注入的版本