Reactjs 获取错误:TypeError:无法读取属性';getId';React+中未定义的;块菌DApp

Reactjs 获取错误:TypeError:无法读取属性';getId';React+中未定义的;块菌DApp,reactjs,solidity,truffle,web3js,decentralized-applications,Reactjs,Solidity,Truffle,Web3js,Decentralized Applications,我的Ganche GUI和metamask正在运行。但我有以下错误 控制台中 TypeError:无法读取未定义的属性“getId” 在App.componentDidMount(App.js:17) 下面是我在App.js代码中的代码 import React, {Component} from 'react'; import logo from './logo.svg'; import './App.css'; import getWeb3 from './utils/getweb3'; i

我的Ganche GUI和metamask正在运行。但我有以下错误 控制台中

TypeError:无法读取未定义的属性“getId” 在App.componentDidMount(App.js:17)

下面是我在App.js代码中的代码

import React, {Component} from 'react';
import logo from './logo.svg';
import './App.css';
import getWeb3 from './utils/getweb3';
import CrowdFundingContract from './contracts/CrowdFunding.json';

class App extends Component {
state = {web3: null, accounts: null, contracts: null};

componentDidMount = async () => {
try{
  const web3 = await getWeb3();

  const accounts = await web3.eth.getAccounts();

  const networkId = await web3.eth.net.getId();

  const deployedNetwork = CrowdFundingContract.networks[networkId];

  const instance = new web3.eth.Contract(CrowdFundingContract.abi, deployedNetwork && deployedNetwork.address);

  this.setState({web3, accounts, contract: instance}, this.runExample);
}
catch(error){
  alert('Failed to load web3, accounts and contract, check the console');
  console.error(error);
}
};

}
我没有把render()和函数returnExample放在这里


请帮助我

您是否连接到eth提供商

    const Web3 = require('web3')
    const web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io'))
您确定使用web3 1.x.x吗?因为您的代码看起来不错,如果您使用web3 v0.x.x,请尝试以下方法:

    web3.version.getNetwork(function(err, res){
      let selectedNetwork = ""

      if (!err) {
          switch (res) {
            case "1":
              selectedNetwork = "Mainnet"
              break
            case "2":
              selectedNetwork = "Morden"
              break
            case "3":
              selectedNetwork = "Ropsten"
              break
            case "4":
              selectedNetwork = "Rinkeby"
              break
            default:
              selectedNetwork = "Unknown network = "+res
        }
        return selectedNetwork
      } else {
        console.log(err)
      }
    })

根本原因是无意中安装了错误版本的web3。我使用了通常的npm命令
npm install web3
,但是安装了错误的版本(0.20.x)。安装正确版本后
web3@1.2.1
问题消失了