web3.eth.coinbase undefined
直接引入url,获得钱包地址
<html>
<head>
</head>
<body>
<div id="title">Web-client for testing get account</div>
<div id="account"></div>
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
<script type="text/javascript">
function loadWeb3() {
var Web3 = require('web3');
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
}
function getAccount(callback) {
let account = web3.eth.coinbase;
let tag = true;
if ("null" == account || null == account) {
tag = false;
}
if(tag){
callback(account);
} else {
setTimeout(function(){
let text = "Try to get account again!";
document.getElementById("account").innerHTML = text;
getAccount(callback);
}, 1000);
}
}
loadWeb3();
getAccount(function(account) {
let text = `Account: ${account}`;
document.getElementById("account").innerHTML = text;
});
</script>
</body>
</html>
在vue项目中:发现直接引入上述的js部分的时候,web3.eth.coinbase为undefined,检查发现是因为项目中安装的版本依赖的问题:package.json里面dependencies项显示了版本为1.0版本,
web3.js 1.0使用如下方法:
web3.eth.getCoinbase((err, coinbase) => {
console.log(coinbase)
}) ;
如果版本为:web3.js 0.20;
则有可能 是没有建立账户,
检查账户
web3.eth.getAccounts(console.dir)