使用webpack-dev-server的局域网访问节点服务器
我使用Express,React和Webpack构build了一个应用程序。 我使用了webpack-dev-server和react-hot-loader来实现生活。
Express服务器位于端口3000上,webpack-dev-server服务器文件位于localhost:8080
。
现在我想访问局域网中另一个客户端的应用程序。 我可以访问development machine IP:3000
,但不能访问localhost:8080
我的webpack.config.dev.js
文件是:
var webpack = require('webpack'); module.exports = { devtool: 'inline-source-map', entry: [ 'webpack-dev-server/client?http://localhost:8080', 'webpack/hot/only-dev-server', './src/client/entry', ], output: { path: __dirname + '/public/js', filename: 'app.js', publicPath: 'http://localhost:8080/public/js', }, plugins: [ new webpack.HotModuleReplacementPlugin(), new webpack.NoErrorsPlugin(), new webpack.DefinePlugin({ "process.env": { BROWSER: JSON.stringify(true) } }) ], resolve: { extensions: ['', '.js', '.jsx', '.css'] }, module: { loaders: [{ test: /\.jsx?$/, loader: 'react-hot', exclude: /node_modules/ }, { test: /\.jsx?$/, loader: 'babel-loader', query: { presets: ['react', 'es2015'], compact: false }, exclude: /node_modules/ }, { test: /\.css$/, loader: 'style-loader!css-loader', exclude: /node_modules/ }, ] } }
和HTML是:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" href="public/css/bootstrap.min.css" media="screen" title="no title" charset="utf-8"> </head> <body> <div id="app">{{ content|safe }}</div> <script src="http://localhost:8080/public/js/app.js"></script> </body> </html>
webpack-dev-server是
import WebpackDevServer from "webpack-dev-server"; import webpack from "webpack"; import config from "../../webpack.config.dev"; var server = new WebpackDevServer(webpack(config), { // webpack-dev-server options publicPath: config.output.publicPath, hot: true, stats: { colors: true }, headers: { "Access-Control-Allow-Origin": "*" } }); server.listen(8080, "localhost", function() {});
我希望我可以在我的本地开发机器上进行实时重新加载,其他电脑或手机可以通过development machine IP:3000
访问服务器和静态文件
我不熟悉webpack。 我只是遵循一些教程来构build开发环境。
我应该如何改变configuration?
如果要接受来自其他本地hostname
以外的其他机器的连接,则需要在server.listen
调用中configurationhostname
参数。 在你的情况下,你只是允许"localhost"
连接:
server.listen(8080, "localhost", function() {});
例如,要接受任何地址的连接,只需删除该参数:
server.listen(8080, function() {});
检查server.listen
的更多信息。