【问题标题】:Web3 with Webpack Build not found without webpack-dev-server没有 webpack-dev-server,找不到带有 Webpack Build 的 Web3
【发布时间】:2018-11-20 04:53:08
【问题描述】:

使用 Reactjs webpack 项目,我可以运行 webpack 开发服务器并使用 web3 访问我的 index.html。

如果我构建项目并在 Chrome 中打开 index.html,则不会检测到 web3。

运行 webpack-dev-server --mode development --open --hot 时一切正常 但是使用 webpack --mode 开发,则不会注入 web3

我的应用程序的目的是一个在本地运行的工具,它不必从任何公共的地方提供,我也不认为我需要运行一个精简服务器来提供内容。

  • web3: 1.0.0-beta.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;
    

【问题讨论】:

    标签: reactjs webpack webpack-dev-server web3


    【解决方案1】:

    发件人:MetaMask Compatibility Guide

    要求 ?

    ? Http(s) - 需要 Web 服务器

    由于浏览器安全限制,我们无法与 dapps 通信 在文件:// 上运行。请使用本地服务器进行开发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2015-10-15
      • 2019-11-22
      • 1970-01-01
      • 2021-10-27
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多