javascript - webpack dev 中间件,HMR 失败时如何自动重新加载

标签 javascript webpack

当我更改我的 javascript 源时,我在浏览器的控制台中收到以下消息:

[HMR] The following modules couldn't be hot updated: (Full reload needed) This is usually because the modules which have changed (and their parents) do not know how to hot reload themselves. See http://webpack.github.io/docs/hot-module-replacement-with-webpack.html for more details.

我的问题是如何让 webpack 在发生这种情况时自动重新加载页面?

这是我的服务器设置:

app.use(morgan('dev'));

        // Disable views cache
        app.set('view cache', false);

        var webpack = require('webpack');

        var webpackConfig = require('../client/webpack.config');
        var compiler = webpack(webpackConfig);

        app.use(require("webpack-dev-middleware")(compiler, {
            noInfo: true, publicPath: webpackConfig.output.publicPath
        }));
        app.use(require("webpack-hot-middleware")(compiler));

和我的 webpack.config:

var path = require('path');
var AureliaWebpackPlugin = require('../node_modules/aurelia-webpack-plugin');
var webpack = require('../node_modules/webpack');

module.exports = {
    entry: {
        main: [
            'webpack-hot-middleware/client',
            './client/src/main'
        ]
    },
    resolve: {
        alias: {
            breeze: 'breeze-client/build/breeze.debug',
            resources: path.resolve( __dirname, 'src', 'resources'),
            utils: path.resolve( __dirname, 'src', 'resources', 'utils', 'utils'),
            tradestudyUtils: path.resolve( __dirname, 'src', 'resources', 'tradestudy-utils', 'tradestudy-utils')
        }
    },
    output: {
        path: path.join(__dirname, 'client'),
        filename: 'bundle.js',
        publicPath: '/'
    },
    devtool: 'eval',
    plugins: [
        new webpack.optimize.OccurenceOrderPlugin(),
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new AureliaWebpackPlugin()
    ],
    module: {
        //preLoaders: [
        //    {test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader'}
        //],
        loaders: [
            { test: /\.scss$/, loaders: ['style', 'css', 'sass'] },
            { test: /\.js$/, loader: 'babel', exclude: /node_modules/, query: { presets: ['es2015-loose', 'stage-1'], plugins: ['transform-decorators-legacy'] } },
            { test: /\.css?$/, loader: 'style!css' },
            { test: /\.html$/, loader: 'raw' },
            { test: /\.(png|gif|jpg)$/, loader: 'url-loader?limit=8192' },
            { test: /\.woff2(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&minetype=application/font-woff2' },
            { test: /\.woff(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&minetype=application/font-woff' },
            { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'file-loader' }
        ]
    }
};

提前致谢?

最佳答案

你可以通过parameter 重新加载webpack-hot-middleware/client:

    entry: {
        main: [
            'webpack-hot-middleware/client?reload=true',
            './client/src/main'
        ]
    },

关于javascript - webpack dev 中间件,HMR 失败时如何自动重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364885/

相关文章:

Javascript 只拆分一次并忽略其余部分

javascript - 尝试发出自定义类 Vuejs 时 $emit 不起作用

javascript - es2015中的多行赋值

coffeescript - 如何将 jest 与 CoffeeScript 和 ES6/ES2015 一起使用(例如通过 Babel)?

reactjs - ./src/index.js 中的错误 14 :4 Module parse failed: Unexpected token (14:4) You may need an appropriate loader to handle this file type

javascript - 如何在 Highcharts 中动态 chop 图表调整大小/重排上的 Y 轴标题

javascript - 如何解决两个事件之间的碰撞,单击外部并单击按钮以关闭 svelte 工具包中的菜单?

javascript - 强制客户端重新加载我的bundle.js

node.js - Webpack:找不到模块:错误:无法解析模块 browser.js

javascript - 你如何将 webpack file-loader 和 svg-inline-loader 用于 SVG?