С помощью проекта Reactjs webpack я могу запустить сервер разработки webpack и получить доступ к моему index.html при поднятии web3.
Если я собираю проект и открываю index.html в Chrome, то web3 не обнаруживается.
Все работает при запуске webpack-dev-server --mode development --open --hot
но с разработкой webpack --mode тогда web3 не вводится
Цель моего приложения - это инструмент, который запускается локально, его не нужно обслуживать из любой точки мира, также я не вижу необходимости запускать облегченный сервер для обслуживания контента.
- web3: 1.0.0-бета.36
- Webpack: 4.22.0
- webpack-cli: 3.1.2
webpack-dev-server: 3.1.8
import './index.css';
import IxoTimelockApp from './components/IxoTimelockApp';
import InstallMetaMask from './components/install-
metamask/install-metamask-component.jsx';
let regeneratorRuntime = require("regenerator-runtime");
class App extends Component {
state = {
web3Obj:null
}
componentDidUpdate(prevprops) {
if (prevprops != this.props){
this.setState({web3Obj: this.props.web3Obj})
}
}
componentDidMount(){
window.addEventListener('load', async () => {
// Modern dapp browsers...
if (window.ethereum) {
window.web3 = new Web3(ethereum);
try {
// Request account access if needed
await ethereum.enable();
this.setState({web3Obj: window.web3})
} catch (error) {
// User denied account access...
}
}
// Legacy dapp browsers...
else if (window.web3) {
window.web3 = new Web3(web3.currentProvider);
this.setState({web3Obj: window.web3})
}
// Non-dapp browsers...
else {
console.log('Non-Ethereum browser detected. You should consider trying MetaMask!');
}
});
}
render() {
if(this.state.web3Obj) {
return <TimelockApp/>
}else return <InstallMetaMask/>
}
}
export default App;
const wrapper = document.getElementById("root");
wrapper ? ReactDOM.render(<App />, wrapper) : false;