本文介绍了MetaMASK不注入窗口。以太:未捕获(承诺中)类型错误:无法读取未定义的属性';请求';的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
首先,让我指出这是一个浏览器内项目,因此我只能使用
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
因此,几个月前,我制作了一个DAPP,尽管我从未设置过提供者,但它工作得很好,所以我猜它使用了MetaMask提供的那些。但是,我使用的指南here唯一的问题是以下代码数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">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
错误只是说,如果我必须添加提供程序,并且所有的目标都是使用来自元掩码的提供程序,并允许连接到元掩码,其余的函数,如Transfer或其他我知道如何处理它们的函数,我的问题似乎只是在我尝试加载页面时出现。
我没有可以使用的以太网节点,也不打算使用NodeJS,只有一个html文件显示MetamASK地址,因此使用浏览器中的Web3js。
我希望只是我没有意识到一些简单的事情,因为我似乎找不到我现在不能使用web3js的原因。
推荐答案
解开谜团,看起来就像显示的错误代码
Uncaught (in promise) TypeError: Cannot read property 'request' of undefined
真正的意思是window.ethereum
没有定义,所以没有确切的原因MetaMask不会注入以太,注意到在阅读了Metamask和Web3js文档后,我的问题与他们的代码无关,实际上我最终将使用此答案中所示的代码。
https://ethereum.stackexchange.com/a/78987
这个问题看起来不管浏览器MetamASK都不会注入,所以我在多个通常需要MetamASK连接的网站和其他正常的网站(如google.com)上进行了测试,令我惊讶的是,除了我自己的测试网站外,每个网站都会有MetamAsk注入Etherum,所以这意味着我的网站被诅咒了什么的,或者只是因为Metamask不会注入到非托管网站上(只是在我的Destop上测试文件),而是在它确实注入的实际主机上进行了测试,我的测试在这些网站上运行。
结论
MetamASK需要普通主机才能注入,它不会注入您自己的工作站上打开的随机文件。
这篇关于MetaMASK不注入窗口。以太:未捕获(承诺中)类型错误:无法读取未定义的属性';请求';的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!