元掩码 web3 未定义

Posted

技术标签:

【中文标题】元掩码 web3 未定义【英文标题】:metamask web3 is undefined 【发布时间】:2018-12-05 23:39:45 【问题描述】:

我已经在本地 PC 上构建了一个 eth 节点。 代码没有问题。 但是当我从 eth 节点退出时, 并使用元掩码运行代码,web3 未定义。

你能告诉我如何解决这个问题吗?

<!DOCTYPE html>
<html>
<head>
<title>Using web3 API with MetaMask</title>
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
<!-- for ecrecover -->
<script type="text/javascript" src="D:\blockchain\test\ethereum\ethereumjs-util.js"></script>
<script>
window.addEventListener('load', function() 
  // Checking if Web3 has been injected by the browser (Mist/MetaMask)
  if (typeof web3 !== 'undefined') 
    // Use Mist/MetaMask's provider
    window.web3 = new Web3(web3.currentProvider);
   else 
    console.log('No web3? You should consider trying MetaMask!')
    window.web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
  
</script>
</head>
</html>

【问题讨论】:

环境:Chrome,元掩码 【参考方案1】:

您是否尝试通过file:// 提供服务?如果是这样,它将无法正常工作。 MetaMask 拒绝提供文件系统 URL。通过 Web 服务器为您的应用程序提供服务。像python -m SimpleHTTPServer 8000 这样的单行代码就可以了。

【讨论】:

【参考方案2】:

当你的以太坊节点宕机时,你的网站无法从你的节点获取信息,你可以切换到 infura.io 提供商

window.web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io"))

【讨论】:

以上是关于元掩码 web3 未定义的主要内容,如果未能解决你的问题,请参考以下文章

metamask/web3 连接问题

获取 web3 元掩码中的注册资产

Web3 发送没有元掩码的合约方法

使用元掩码时检测 web3 默认帐户的更好模式

如何在元掩码中自动切换帐户

如何将 ethers.js 与元掩码连接起来?