Web3js

MetaMask 阻止 Web3 請求

  • August 22, 2019

我剛剛設置了一個Block Explorer來與我的私有區塊鏈進行互動。

私有區塊鏈在虛擬機中執行。主機系統連接到 Block explorer(也在 VM 上)。

當我在瀏覽器中安裝元遮罩時,請求失敗。見圖片。

在此處輸入圖像描述

當我解除安裝 Meta Mask 時,應用程序可以從區塊鏈中獲取塊。

在此處輸入圖像描述

虛擬機 - Ubuntu 18.04

主機 - Windows 10

這是一種非常奇怪的行為。究竟是什麼導致了這個問題?特別是因為我什至不與元遮罩互動。

編輯 1:儘管我在 Metamask 上停用了隱私模式毫無意義。但是它仍然無法正常工作。

編輯 2:在 Firefox 上的行為相同。

編輯3:重現步驟:

  • 建立私有區塊鏈。
  • 在鏈 RPC-Port 上配置資源管理器。
  • 啟動區塊鍊和資源管理器。
  • 現在它起作用了。
  • 安裝 MetaMask。
  • 現在它不起作用。

編輯 4:最有可能導致元遮罩問題的程式碼行

在 app.js 中:

var web3 = new Web3();
var eth_node_url = 'http://xxx.xxx.xxx.xxx:22000';
web3.setProvider(new web3.providers.HttpProvider(eth_node_url));

但是程序繼續執行並在以下位置崩潰:

var blockNum = $scope.blockNum = parseInt(web3.eth.blockNumber, 10);

MetaMask 會覆蓋我創建的 web3 實例嗎?

我修好了它。在 app.js 中添加此程式碼:

// MetaMask injects its own web3 instance in all pages, override it
// as it might be not compatible with the one used here
if (window.web3)
   window.web3 = web3;

引用自:https://ethereum.stackexchange.com/questions/74076