[英]Uncaught TypeError: web3 is not a constructor. the blockchain website cannot connect to metamask
i have issue on web3.eth.defaultAccount = web3.eth.getAccounts();我有关于web3.eth.defaultAccount = web3.eth.getAccounts() 的问题;
below is the code.下面是代码。 it said Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getAccounts')
它说Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getAccounts')
the version of my web3 is "^1.3".我的 web3 版本是“^1.3”。
var contract = "";
if (typeof web3 !== 'undefined') {
console.log('inside web3')
Web3 = new Web3 (Web3.currentProvider);
} else {
console.log('else web3');
var web3 = new Web3(new Web3.providers.HttpProvider(provider));
}
window.ethereum.enable()
.then(function (accounts) {
console.log(accounts[0]);
web3.eth.defaultAccount = web3.eth.getAccounts();
var contractabi = web3.eth.contract([ABI])
function must be async function 必须是异步的
window.addEventListener("load", async () => {
// Modern dapp browsers...
if (window.ethereum) {
const web3 = new Web3(window.ethereum);
try {
// Request account access if needed
await window.ethereum.enable();
// Acccounts now exposed
resolve(web3);
} catch (error) {
reject(error);
}
}
try this to fit your case试试这个适合你的情况
if possible send me the complete implementation of this code, or you can add this如果可能,请将此代码的完整实现发送给我,或者您可以添加此代码
class App extends Component {
async UNSAFE_componentWillMount() {
await this.loadWeb3();
await this.loadBlockchainData();
}
async loadWeb3() {
if (window.ethereum) {
window.web3 = new Web3(window.ethereum);
await window.ethereum.enable();
} else if (window.web3) {
window.web3 = new Web3(window.web3.currentProvider);
} else {
window.alert('No ethereum broswer detected! You can check out MetaMask!');
}
}
async loadBlockchainData() {
const web3 = window.web3;
const account = await web3.eth.getAccounts();
this.setState({ account: account[0] });
const networkId = await web3.eth.net.getId();
}
}
please use async function to interact with web3 and await the response请使用 async function 与 web3 交互并等待响应
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.