Metamask
Metamask web3.eth.account000未定義
我在使用 metamask 時遇到了一些問題。我已經從 metamask 文件中複製了下面的程式碼來載入 web3,但是
web3.eth.accounts[0] returns undefined
當我嘗試獲取帳戶的地址時,即使 metamask 連接到 ropsten,我總是會得到。相同的程式碼完美地適用於 Mist。window.addEventListener('load', function() { if (typeof web3 !== 'undefined') { // 使用 Mist/MetaMask 的提供者 window.web3 = new Web3(web3.currentProvider); console.log("使用的元遮罩"); } 別的 { console.log('沒有 web3?你應該考慮試試 MetaMask!') // 回退 - 使用您的回退策略(本地節點/託管節點 + in-dapp id mgmt / 失敗) window.web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/token")); } console.log('test1'+web3.eth.accounts[0]); }); console.log('test'+web3.eth.accounts[0]);
我得到第一個日誌的輸出。
Metamask 不允許您使用同步函式。改用:
web3.eth.getAccounts(函式(錯誤,帳戶){ ... });
並刪除您的第二個日誌。您只想在正確初始化後執行操作。
您還可以使用 await 進行同步。
const getAccount = async () => { ... const accounts = await web3.eth.getAccounts(); const account = accounts[0]; return account; }