【发布时间】:2021-04-24 09:27:54
【问题描述】:
首先,让我提一下这是一个浏览器内的项目,所以我只能使用
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
所以几个月前我做了一个 dapp,即使我从未设置过提供者,它也能正常工作,所以我猜它使用了 MetaMask 提供的那些。 但是,我正在使用指南 here 唯一的问题是以下代码,
var account_global, connected = false;
async function connect() {
if (!connected) {
var wei;
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); // Waits for connection to MetaMask.
account_global = accounts[0];
web3.eth.defaultAccount = account_global;
console.log(account_global.toString() + " connected!");
connected = true;
console.log(account_global);
}
}
connect();
此代码用于在我的 dapp 上批准元掩码后输出元掩码用户的地址,但是我收到错误
Uncaught (in promise) TypeError: Cannot read property 'request' of undefined
错误只是说,如果我必须添加提供程序,我的实际目标是使用元掩码中的提供程序,并允许连接到元掩码,其余的功能,如传输或其他我知道如何处理它们,我的问题似乎是在我尝试加载页面时出现的。
我没有使用以太节点,也不打算使用nodejs,只有一个显示元掩码地址的html文件,因此使用浏览器内的web3js。
我希望只是我没有意识到一些简单的事情,因为我似乎找不到我现在不能使用 web3js 的原因。
【问题讨论】:
标签: javascript browser ethereum web3js metamask