reactjs - 带有 React Hot Loader 的 Webpack 开发服务器

标签 reactjs webpack webpack-dev-server react-hot-loader hot-module-replacement

我有一个本身就可以完美运行的 webpack 配置。我正在尝试按照建议将 React Hot Loader 与 HMR 安装在一起,这需要 webpack-dev-server。在这里我无法让它工作。我找不到我的包所在的位置。我希望它位于 localhost:3000

我的webpack.config.js:

var webpack = require('webpack');
var path = require('path');

module.exports = {
  watch: true,

  devtool: 'eval',

  // entry: './src/main.js', This runs just for webpack bundling

  entry:[
    'webpack-dev-server/client?http:localhost:9000', // WebpackDevServer host and port
    'webpack/hot/only-dev-server', // "only" prevents reload on syntax errors
    './src/main.js' // Your appʼs entry point
  ],

  output: {
    path: path.resolve(__dirname, 'public', 'dist'),
    filename: 'main.js'/*,
    publicPath: '/dist/'*/
  },

  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['react-hot', 'babel-loader?cacheDirectory=true,presets[]=react,presets[]=es2015'],
      exclude: function(path) {
        var isModule = path.indexOf('node_modules') > -1;
        var isJsaudio = path.indexOf('jsaudio') > -1;

        if (isModule && !isJsaudio) {
          return true;
        }
      }
    }, {
      test: /\.json$/,
      loader: "json-loader"
    }]
  },

  plugins: [
    new webpack.HotModuleReplacementPlugin()
  ],

  resolve: {
    extensions: ['', '.js', '.json', 'index.js'],
    root: [
      path.resolve(__dirname, 'src'),
      path.resolve(__dirname, 'node_modules'),
      path.resolve(__dirname, 'node_modules', 'jsaudio', 'src')
    ]
  },

  target: 'web',

  node: {
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }
};

webpack-server.js:

var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');

new WebpackDevServer(webpack(config), {
    publicPath: '/dist/',
  hot: true,
  historyApiFallback: true
}).listen(9000, 'localhost', function (err, result) {
  if (err) {
    return console.log(err);
  }

  console.log('Listening at http://localhost:9000/');
});

更新:链接的问题没有帮助,尤其是因为它甚至没有确认的答案。

最佳答案

我建议尝试 react-hot-loader v3,因为使热重载工作的更新已经简化(在我看来!)。

在webpack中然后try点现在只需要:

entry: {
    app: [
        'react-hot-loader/patch',
        'webpack-hot-middleware/client',
        `${SRC}/client-entry.js`
    ]
}

这里是示例应用程序的链接,react-lego我为帮助人们而创建的 add react-hot-loader v3到他们的应用程序。希望对你有帮助

关于reactjs - 带有 React Hot Loader 的 Webpack 开发服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39225829/

相关文章:

javascript - 模块构建失败 - Webpack、React、Babel

webpack - 如何告诉 webpack 不要缩小和打包 js 文件

reactjs - 将 Electron 与React应用程序一起使用时`require is not defined`错误

javascript - browserify/webpackify 目录中的所有文件

javascript - 如何在不手动一一添加的情况下为组件中的每个元素绑定(bind)相同的事件?

javascript - 环境变量 - 未定义

webpack-dev-server 端口自动分配

javascript - 未捕获的类型错误 : Cannot read property 'webpackHotUpdate' of undefined

javascript - 如何在 react 中监听按钮点击事件?

javascript - 未捕获( promise 中)TypeError : this. state.[prop].map 不是函数