无法访问由vagpack上的webpack-dev-server启动的网页

时间:2016-05-02 15:19:52

标签: webpack vagrant babeljs webpack-dev-server

从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默认工具进行网络诊断,诊断为:“远程设备无法接受连接

2 个答案:

答案 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/