Web3js
MetaMask 阻止 Web3 請求
我剛剛設置了一個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;