从React和Flux架构开始,但遇到了一些基础设施问题。
我无法访问流浪盒(scotch-box)上webpack-dev-server启动的网页。该命令在localhost:3002上启动应用程序,我的vagrant box在Windows主机中有一个IP(192.168.33.10)地址,我可以访问它。但是当我尝试访问192.168.33.10:3002时,我收到错误: “无法访问该页面.... ”
我检查过我可以访问流浪者控制台curl http://localhost:3002
中的页面。
有没有人知道为什么会这样?
我也在使用es2015的babel和presets并做出反应。
这是webpack配置文件:
module.exports = {
entry: "./src/js/main.js",
output: {
path: "./dist",
filename: "bundle.js",
publicPath: "/"
},
devServer: {
inline: true,
port: 3002,
contentBase: "./dist"
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: "babel",
query: {
presets: ["es2015", "react"]
}
}
]
}
};
这是我的package.json
{
"name": "flux-jenezis",
"version": "1.0.0",
"description": "Flux realisatoin usign egghead guide",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server"
},
"keywords": [
"flux",
"react"
],
"author": "jenezis",
"license": "ISC",
"dependencies": {
"flux": "^2.1.1",
"react": "^15.0.2",
"react-dom": "^15.0.2",
"react-router": "^2.4.0"
},
"devDependencies": {
"babel-core": "^6.7.7",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0"
}
}
UPD :我可以访问由节点服务器启动的不同应用程序,并且可以通过192.168.33.10:3002
UPD2:使用Windows默认工具进行网络诊断,诊断为:“远程设备无法接受连接”
答案 0 :(得分:16)
找到解决方案。默认情况下,webpack-dev-server
会在localhost:<port>
上运行应用程序。要更改它,您可以使用此命令运行webpack-dev-server
(通过传递--host选项):
webpack-dev-server --port 3000 --hot --host 0.0.0.0
0.0.0.0
绑定到所有主机。
我改变了package.json
,现在看起来像是:
{
"name": "flux-jenezis",
"version": "1.0.0",
"description": "Flux realisatoin usign egghead guide",
"main": "index.js",
"scripts": {
"start": "webpack-dev-server --host 0.0.0.0"
},
"keywords": [
"flux",
"react"
],
"author": "jenezis",
"license": "ISC",
"dependencies": {
"flux": "^2.1.1",
"react": "^15.0.2",
"react-dom": "^15.0.2",
"react-router": "^2.4.0"
},
"devDependencies": {
"babel-core": "^6.7.7",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0"
}
}
答案 1 :(得分:0)
对于像我一样仍然可能遇到此问题的人,对我来说,问题在于端口转发。我的Virtualbox VM是带有Apache Web服务器的Linux VM。我使用Vagrant通过配置文件轻松启动虚拟机,Vagrant称这些为“ Vagrantfile”。在“ Vagrantfile”中,您可以指定要在来宾计算机(您的VM)和主机(您的实际操作系统)之间转发的端口。
这看起来像这样:
config.vm.network "forwarded_port", guest: 3000, host: 3000
虚拟机启动后,现在可以从主机上的来宾计算机访问该端口。换句话说,如果您的webpack配置如下所示:
devServer: {
host: '0.0.0.0',
port: 3000
}
您现在应该可以从主机上的浏览器访问http://0.0.0.0:3000
。
注意:如果您使用的是Virtualbox,而不是Vagrant,但仍需要端口转发方面的帮助,请访问本文以获取一些不错的提示:https://blog.codecentric.de/en/2017/08/fix-webpack-watch-virtualbox/