Web3 с Webpack Build не найден без webpack-dev-server - PullRequest
0 голосов
/ 20 ноября 2018

С помощью проекта 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;
    

1 Ответ

0 голосов
/ 21 ноября 2018

От: Руководство по совместимости с MetaMask

Требования ?

? Http (s) - требуется веб-сервер

Из-за ограничений безопасности браузера мы не можем общаться с dapps работает на файл: //. Пожалуйста, используйте локальный сервер для разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...