Solidity

Web3 未通過 infura 與 ropsten 連接

  • February 21, 2019

所以我的基於松露的應用程序與我的私人網路、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,trueweb3.eth.accounts沒有返回我網路中的地址。

經過更多研究,我發現了web3-hdwallet-provider,它使我可以再次訪問我的地址。

我希望這有助於為外面的人節省時間。

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