Reactjs 获取错误:TypeError:无法读取属性';getId';React+中未定义的;块菌DApp
我的Ganche GUI和metamask正在运行。但我有以下错误 控制台中 TypeError:无法读取未定义的属性“getId” 在App.componentDidMount(App.js:17) 下面是我在App.js代码中的代码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
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
问题消失了