【发布时间】:2021-10-07 20:56:54
【问题描述】:
我正在构建一个 dapp,我希望它连接到 metamask。我从https://docs.metamask.io/guide/getting-started.html#basic-considerations 得到了下面的代码。 Metamask 已安装在我的浏览器上,但无法正常工作。当浏览器加载页面时,控制台会写入MetaMask not installed!。当我单击enableEthereumButton 时,控制台给了我一个错误:
demo.js:16 Uncaught (in promise) ReferenceError: ethereum is not defined
at getAccount (demo.js:16)
at HTMLButtonElement.<anonymous> (demo.js:12)
getAccount @ demo.js:16
(anonymous) @ demo.js:12
index.html
<!DOCTYPE html>
<html>
<head>
<title>Dapp</title>
</head>
<body>
<button class="enableEthereumButton">Enable Ethereum</button>
<h2>Account: <span class="showAccount"></span></h2>
<script src="demo.js"></script>
</body>
</html>
demo.js
if (typeof window.ethereum !== 'undefined') {
console.log('MetaMask is installed!');
}
else{
console.log('MetaMask not installed!');
}
const ethereumButton = document.querySelector('.enableEthereumButton');
const showAccount = document.querySelector('.showAccount');
ethereumButton.addEventListener('click', () => {
getAccount();
});
async function getAccount() {
const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
const account = accounts[0];
showAccount.innerHTML = account;
}
我错过了什么?我按照上面提供的网站上的说明进行操作。
【问题讨论】:
-
问题是我从 file:///C:/Users/.../index.html 运行 index.html 文件。当我从网络服务器运行它时,一切正常。
标签: javascript web3js metamask