Задать вопрос

Как включить поддержку HMR в webpack?

Здравствуйте. Решил начать использовать webpack для:
1) генерации исходных данных для паблика (минификация, спрайты и т.д.)
2) использование hot module replacement.
3) и пр.

Возникли сложности при использовании HMR, перезагружается страница полностью.
HMR] Cannot apply update. Need to do a full reload!
[HMR] Error: Aborted because 76 is not accepted
...
Uncaught RangeError: Maximum call stack size exceeded

При переходе по ошибке:
webpackHotUpdate(0,{

/***/ 76:
/***/ function(module, exports) {

	console.log('test');

/***/ }

})
//# sourceMappingURL=0.a2c058c04b843eab955f.hot-update.js.map


Как решается задача?

Что заметил
Если заходить по адресу:
localhost:8080/webpack-dev-server - страница не перезагружается, лог остается в консоли, собственно там увидел ошибку.
localhost:8080 - перезагружается страница.

UPD.
config.js
var webpack = require("webpack"),
  ExtractTextPlugin = require("extract-text-webpack-plugin"),
  PathRewriterPlugin = require('webpack-path-rewriter');

module.exports = {
  devtool: 'source-map',

  entry: {
    app: [
        'webpack-dev-server/client?http://localhost:8080',
        'webpack/hot/dev-server',
        './src/bundle.js'
      ]
  },

  output: {
    path: '/public/',
    filename: '[name].js'
  },

  module: {
    loaders: [{
      test: /\.js$/,
      exclude: /node_modules/,
      loader: "babel"
    }, {
      test: /\.scss$/,
      loader: ExtractTextPlugin.extract("style", "css!sass!autoprefixer")
    }, {
      test: /\.(png|jpg)$/,
      loader: "url?limit=3000&name=[name].[ext]?[hash]"
    }, {
      test: /.jade$/,
      loader: PathRewriterPlugin.rewriteAndEmit({
        name: 'index.html',
        loader: 'jade-html?' + JSON.stringify({
          pretty: true
        }),
        includeHash: true
      })
    }]
  },

  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new ExtractTextPlugin('[name].css', {
      allChunks: true,
      disable: process.env.NODE_ENV == 'development'
    }),
    new PathRewriterPlugin(),
    new webpack.NoErrorsPlugin()
  ]
};


bundle.js
// Js
require('./js/index.js');

// Jade
require('./jade/index.jade');


index.js
console.log('test');

index.jade
doctype html
html
  head
    meta(charset='utf-8')
    title(v-text='title')
    meta(name='viewport', content='width=device-width, initial-scale=1, user-scalable=no')
    link(href='[[ app.css ]]', media='all', rel='stylesheet')
    script(src='[[ app.js ]]')
  body
    .div Тест


Есть желание настроить окружения для дев разработки с работой HMR, и иметь возможность сгенерировать файлы для продакшена.

При изменении js, css происходит релоад страницы. При изменении jade вообще никаких реакций.
  • Вопрос задан
  • 6089 просмотров
Подписаться 3 Оценить 3 комментария
Решения вопроса 1
Как вы запускаете webpack? Случаем, не `--hot` добавляете? Ошибка по виду похожа на два HotModuleReplacement плагина.

Вот здесь посмотрите выпуск про HMR, learn.javascript.ru/webpack-screencast, может и вопросы снимет?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы