2016-01-23 66 views
13

我正在我的WebPack-DEV-服務器webpack dev服務器的懶惰模式是做什麼的?

webpack-dev-server --lazy --inline --progress --colors --port 8082 

然而,這顯示在瀏覽器中一個404錯誤,當它試圖訪問bundle.js

其他一切似乎都很好,因爲如果我用--hot代替--lazy,事情就可以正常工作。

--lazy然後做什麼?

更新:

這裏是的WebPack文件 -

module.exports = { 
    devtool: "source-map", 
    entry: [ 
     'webpack/hot/only-dev-server', // "only" prevents reload on syntax errors 
     "./app/main.js" 
    ], 
    output: { 
     path: "./js", 
     filename: "bundle.js" 
    }, 
    module: { 
     loaders: [ 
      { test: /\.css$/, loader: "style-loader!css-loader"}, 
      { test: /\.js$/, exclude: /node_modules/, loaders: ["react-hot"] } 
     ] 
    } 
}; 
+0

你能告訴你的WebPack配置文件? – Kote

+0

@親愛好我現在加了 – pdeva

回答

2

一些調試後,我發現,在webpack-dev-middleware(在webpackDevMiddleware功能)有if語句如下:

// in lazy mode, rebuild on bundle request 
if(options.lazy && (!options.filename || options.filename.test(filename))) { 
    rebuild(); 
} 

永遠不會執行該rebuild()功能,因爲options.filename.test(filename)跳投返回false。這是因爲filename值有一個斜槓(「/bundle.js」)。所以,我改變了options.filename正則表達式來允許這個斜槓並且解決了這個問題。

我做了GitHub上拉請求: https://github.com/webpack/webpack-dev-middleware/pull/62

0

懶惰的模式根本就不在每一個變化,但重新編譯,而不是等待下一次調用入口點,以檢查更改

+0

那麼爲什麼它根本不提供'bundle.js'文件?最初在啓動時不應該編譯? – pdeva

0

下面是--lazy和--hot的區別:

--lazy: no watching, compiles on request. 

--hot: adds the HotModuleReplacementPlugin and switch the server to hot mode. 

Al所以,在這裏找到更多關於HotModuleReplacementPlugin的信息: https://github.com/webpack/docs/wiki/list-of-plugins

參見:http://webpack.github.io/docs/webpack-dev-server.html

+0

這裏'請求'是什麼意思?來自瀏覽器的GET請求? – pdeva

+0

是的,它可以是資源的GET請求,如圖像/標誌/ js和/或css文件等。 –

+0

那麼爲什麼我的瀏覽器給出一個404 – pdeva