2016-03-21 4 views
2

Hier ist mein Server-Code:webpack-hot-Middleware nicht heiß ersetzt

if (process.env.NODE_ENV === 'development') { 
     // Enable logger (morgan) 
     app.use(morgan('dev')); 

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

     var webpack = require('webpack'); 
     var webpackDevMiddleware = require('webpack-dev-middleware'); 
     var webpackHotMiddleware = require('webpack-hot-middleware'); 

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

     app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: webpackConfig.output.publicPath })); 
     app.use(webpackHotMiddleware(compiler)); 

    } 

und hier ist mein webpack.config:

module.exports = { 
    entry: { 
    main: [ 
     'webpack-hot-middleware/client', 
     './client/src/main' 
    ] 
    }, 
    output: { 
    path: path.join(__dirname, 'client/build'), 
    filename: 'bundle.js', 
    publicPath: '/build/' 
    }, 
    plugins: [ 
    new AureliaWebpackPlugin(), 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.NoErrorsPlugin() 
    ], 
    module: { 
    loaders: [ 
     { test: /\.js$/, loader: 'babel', exclude: /node_modules/, query: {stage: 0} }, 
     { 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' } 
    ] 
    } 
}; 

Jedes Mal, wenn ich eine Quelldatei ändern, webpack umbaut kein Problem. Es gibt jedoch keinen Hot-Replacement/Reload im Browser ... Fehle ich etwas? Ich dachte, ich hätte die Anweisungen ziemlich genau befolgt.

Vielen Dank im Voraus.

+0

Fehler im Browserkonsole? –

+0

Stellen Sie sicher, dass 'process.env.NODE_ENV === 'development''' true' ist. –

+0

@BobSponge Bestätigen, dass process.env.NODE_ENV === 'development' wahr ist (dh die Codeausführung wird in die if-Anweisung übernommen) und dass es keine Fehler in der Browserkonsole gibt. – pQuestions123

Antwort

1

Also mein Problem wurde tatsächlich in der Dokumentation abgedeckt. Ich verwendete das Komprimierungsmodul vor der webpack-hot-middleware und hatte die Komprimierung nicht aktualisiert.

Sehen Sie dieses Problem: https://github.com/glenjamin/webpack-hot-middleware/issues/10

Grundsätzlich, wenn Sie die Komprimierung verwenden, stellen Sie sicher, dass Sie^1.6 aktualisieren. Ich habe 1.2 -> 1.6.1 aufgerüstet und es wird mir jetzt heiß umgeladen.

+0

Ich benutze '1.6.2' und es funktionierte nicht für mich. Aber ich habe die Middleware einfach vor der Komprimierung registriert und es war genug. Danke, dass du das geteilt hast. Ich habe viel Zeit (Tage) damit verbracht, es zum Laufen zu bringen. – BrunoLM

3

Mein Problem erfolgreich gelöst wurde, als ich einige Parameter webpack-hot-Middleware hinzugefügt HMR zu ermöglichen und Abfrageparameter zu webpack-hot-Middleware/Client in Eintrag, etwa so:

//#server.js add parameters to Enables HMR 
    app 
    .use(webpackHotMiddleware(compiler, { 
     'log': false, 
     'path': '/__webpack_hmr', 
     'heartbeat': 10 * 1000 
    })) 


//# webpack.config.js: 
     entry: { 
     main: [ 
      'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000&reload=true', 
      './client/src/main' 
       ] 
+0

Danke! Dies half mir tatsächlich, mein Problem beim Nachladen zu lösen – LordDave