没有 webpack-dev-server 找不到带有 Webpack Build 的 Web3
Web3 with Webpack Build not found without webpack-dev-server
通过 Reactjs webpack 项目,我能够 运行 webpack 开发服务器并访问我的 index.html 并获取 web3。
如果我构建项目并在 Chrome 中打开 index.html,则不会检测到 web3。
运行ning webpack-dev-server --mode development --open --hot 一切正常
但是使用 webpack --mode development 然后 web3 没有被注入
我的应用程序的目的是成为 运行 本地工具,它不必从任何地方提供服务 public,而且我认为我不需要 运行 提供内容的精简服务器。
- web3: 1.0.0-beta.36
- 网络包: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;
发件人:MetaMask Compatibility Guide
要求
Http(s) - 需要 Web 服务器
Due to browser security restrictions, we can't communicate with dapps
running on file://. Please use a local server for development.
通过 Reactjs webpack 项目,我能够 运行 webpack 开发服务器并访问我的 index.html 并获取 web3。
如果我构建项目并在 Chrome 中打开 index.html,则不会检测到 web3。
运行ning webpack-dev-server --mode development --open --hot 一切正常 但是使用 webpack --mode development 然后 web3 没有被注入
我的应用程序的目的是成为 运行 本地工具,它不必从任何地方提供服务 public,而且我认为我不需要 运行 提供内容的精简服务器。
- web3: 1.0.0-beta.36
- 网络包: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;
发件人:MetaMask Compatibility Guide
要求
Http(s) - 需要 Web 服务器
Due to browser security restrictions, we can't communicate with dapps running on file://. Please use a local server for development.