Solidity
Web3 未通過 infura 與 ropsten 連接
所以我的基於松露的應用程序與我的私人網路、ganache 和 ganache-cli 上的智能合約通信良好。
然後我將它部署到 ropsten,在那裡我使用從 infura.io 獲得的端點作為我的 api-key
現在,如果我使用與我的 httpProvider 相同的 api-key(端點),一切都會停止工作,但如果我打開元遮罩,它會再次開始工作,所以我認為很可能是我與 ropsten 的連接出錯了。
這是我連接到 ropsten 的腳本:
import Vue from 'vue' import App from './App' import Web3 from 'web3' import router from './router' Vue.config.productionTip = false window.addEventListener('load', function () { if (typeof web3 !== 'undefined') { console.log('Web3 injected browser: OK.') window.web3 = new Web3(window.web3.currentProvider) } else { console.log('Web3 injected browser: Fail. You should consider trying MetaMask.') // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail) window.web3 = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io/v3/<My-API-Key>')); } console.log(window.web3.eth.accounts) // returns an empty array, but it's meant to contain the address in that wallet /* eslint-disable no-new */ new Vue({ el: '#app', router, template: '<App/>', components: { App } }) })
請幫我弄清楚我做錯了什麼,導致我與 ropsten 的連接不起作用。
松露 - 5.0.4
節點 - 10.15.0
Web3 - 0.20.6
視窗 10
顯然,問題出在我的 web3 版本上。將其更新到 1.0.0-beta.4.6 使我與 infura 工作建立了聯繫。
我在安裝 web3 之前遇到了其他問題,我覺得有必要分享一下,以防其他人遇到這個問題
我跑去
npm install -g node-gyp
全域安裝 node-gyp然後我不得不執行
npm install -g windows-build-tools@4.00
,因為這是撰寫本文時最穩定的版本。此時我重新啟動了我的電腦。然後我
npm install nan
在我的項目directoyu中執行,因為它是一個名為的包的依賴項,scrypt
它也web3
嘗試安裝。然後我
scrypt
單獨安裝然後我
npm install web3
又跑來安裝 web3展望未來,現在可以連接到 infura,
true
但web3.eth.accounts
沒有返回我網路中的地址。經過更多研究,我發現了web3-hdwallet-provider,它使我可以再次訪問我的地址。
我希望這有助於為外面的人節省時間。