我正在使用truffle/ganache/metamask/vue开发一个dapp。一切都很顺利,直到我更新了Google Chrome和Metamask的扩展。现在我不能让帐户登录元掩码了。
我已经尝试使用async/await、promises等方法调用getAccounts()。尽管我登录了元掩码,但仍无法正常工作,并且我能够看到我的余额,将其转移到另一个帐户……同样奇怪的是,web3在浏览器中被正常注入。
这是在main.js中
window.addEventListener('load', function () {
if (typeof web3 !== 'undefined') {
console.log('Web3 injected browser: OK.')
Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send;
window.web3 = new Web3(window.web3.currentProvider)
} else {
console.log('Web3 injected browser: Fail. You should consider trying MetaMask.')
// fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send;
window.web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'))
}
这是在Vue组件中
window.web3.eth.getAccounts((err, res) => {
if (err){
console.log("error")
console.log(err)
}
console.log(res[0]);
});
我希望控制台日志打印我的钱包地址,而不是“未定义”。数组web3.eth.accounts现在始终为空。
我做错什么了吗?提前谢谢。
发布于 2019-04-27 00:00:29
我已经发现了问题所在。在新版本的Metamask中,默认情况下会激活隐私模式。我只需要把它关掉,然后开始正常工作。
https://stackoverflow.com/questions/55874354
复制