2016-05-06 10 views
12

Quando costruisco il mio pacchetto js con il webpack utilizzando webpack-dev-server, il mio codice viene eseguito due volte ogni volta. Non sei sicuro di come aggiustarlo.Tutto il mio codice viene eseguito due volte quando compilato da Webpack

Screenshot of Developer Tools console

mio webpack config:

var path = require('path'); 
var webpack = require('webpack'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var CopyWebpackPlugin = require('copy-webpack-plugin'); 

module.exports = { 
    devtool: 'cheap-eval-sourcemap', 
    entry: [ 
    'webpack-dev-server/client?http://localhost:8080', 
    'webpack/hot/dev-server', 
    path.join(__dirname, '../src/main') 
    ], 
    output: { 
    path: path.join(__dirname, '../dist'), 
    filename: 'bundle.js' 
    }, 
    plugins: [ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new HtmlWebpackPlugin({ 
     template: path.join(__dirname, '../src/index.html') 
    }), 
    new CopyWebpackPlugin([ 
     { 
     from: path.join(__dirname, '../assets'), 
     to: path.join(__dirname, '../dist/assets') 
     } 
    ]) 
    ], 
    devServer: { 
    contentBase: path.join(__dirname, '../dist'), 
    outputPath: '/lol', 
    hot: true 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.js$/, 
     loaders: ['babel-loader'], 
     include: path.join(__dirname, '../src') 
     } 
    ] 
    } 
}; 
+0

Ho visto lo stesso comportamento per un po '. Sembra una regressione da qualche parte lungo la strada. Non vedo nulla di evidentemente sbagliato nella configurazione in quanto è simile a quello che uso. È possibile ottenere lo stesso comportamento se si esegue il server di sviluppo in modalità inline ('inline: true' + si eliminano le voci relative al server di sviluppo). Immagino che dovremmo scavare nel codice per risolvere questo. –

+0

Questo potrebbe essere correlato a https://stackoverflow.com/questions/37447858/webpack-adding-duplicates-of-runtime-into-bundle/37466820#37466820. –

risposta

26

nel file di modello che si avrebbe potuto aggiungere manualmente un caricamento del fascio.

Se non si ha la possibilità

inject: false 

in

new HtmlWebpackPlugin({ 
    template: path.join(__dirname, '../src/index.html') 
}), 

il bundle otterrà aggiunto di nuovo.

+2

shiz, sei un risparmiatore di vita. Fortunatamente da allora ho riscritto il file di configurazione del webpack e ho fatto l'iniezione di false, non sapevo che era il problema però. Grazie! –

+2

mi hai salvato la vita. Stavo impazzendo con questo numero –

+0

che insetto super-pazzo: -O –