鍍金池/ 問答/HTML/ webpack3.8.1 webpack-dev-server 無(wú)法實(shí)現(xiàn)熱更新,

webpack3.8.1 webpack-dev-server 無(wú)法實(shí)現(xiàn)熱更新,官網(wǎng)的例子跟著寫一樣不行

沒事不要用最新版或者webpack3,等于自殺,建議用webpack2,3還是一堆坑。。。
webpack3.8.1 webpack-dev-server 無(wú)法實(shí)現(xiàn)熱更新,官網(wǎng)的例子跟著寫一樣不行,已經(jīng)上網(wǎng)找了很多資料,根本不知道是什么原因,難道新版本的問題還是我設(shè)置的問題?每次都要手動(dòng)刷新,是配置哪里設(shè)置錯(cuò)了?折騰了一晚上。說漏了關(guān)鍵點(diǎn),index.html文件是靜態(tài)文件,引入build.js的,index.html文件不在watch中。。。翻到論壇中的一篇文章的作者說到

clipboard.png

官網(wǎng)的文檔:https://doc.webpack-china.org...
已經(jīng)使用webpack --watch 監(jiān)聽,但奇怪的是每次修改文件都會(huì)生產(chǎn)多一個(gè)js和json
如下面這樣

0.a3bbf6cf39dcba749b38.hot-update.js
a3bbf6cf39dcba749b38.hot-update.json

好像設(shè)置了publicPath為下面那樣才會(huì)有熱更新log日志輸出
版本環(huán)境,編輯器已關(guān)閉安全模式

"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.5"

webpack.config.js

const path = require('path');
const webpack = require('webpack');
module.exports = {
    entry: './css.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'build.js',
        // publicPath: "http://localhost:8080/dist" 
    },
    module: {
        rules: [
            {
            test: /\.css$/,
            use: [
                {
                    loader: "style-loader"
                },
                {
                    loader: "css-loader",
                    options: { importLoaders: 1 }
                },
                {
                    loader: "postcss-loader"
                }
            ]
        }
        ]
    },
    devServer: {
        contentBase: './',
        hot: true,
        inline: true
    },
    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        //new webpack.NamedModulesPlugin()
    ]
}

執(zhí)行命令

"start": "webpack-dev-server --inline --hot --open"
回答
編輯回答
旖襯

"start": "webpack-dev-server --inline --hot --open" 加上要執(zhí)行的文件
"start": "webpack-dev-server --config webpack.config.js --inline --hot --open"
還有你可以devSever里面配--inline --hot --open
devServer: {

    contentBase:'./',
    open: true,
    inline: true,
    hot: true,
    historyApiFallback: true,
    port: 8080
},
2017年11月10日 21:56
編輯回答
柒槿年

我是來?yè)Q聲望的

2017年6月27日 18:34
編輯回答
陌上花

翻了一堆資料終于發(fā)現(xiàn)問題在哪里了!!!看了很多文章都沒怎么說這個(gè)路徑是怎么回事,現(xiàn)在算是搞清楚了。
首先devServerpublicPath路徑是指向內(nèi)存生產(chǎn)的路徑,不在物理硬盤上,所以我的index.html里面引用的
js路徑,應(yīng)該相對(duì)于publicPath地址。
注意:publicPath地址默認(rèn)不寫會(huì)讀取output的publicPath路徑,publicPath總是以‘/’開頭。
網(wǎng)上也說建議devServerpublicPathoutputpublicPath一致。最好是相對(duì)路徑?不清楚網(wǎng)上說法不一。
修正文件寫法:

devServer: {
        publicPath: '/', //注意這里,相應(yīng)看html的引用路徑為如果寫 /test/,那么引用就是 /test/+ 資源文件名
        contentBase: './',
        historyApiFallback: true,
        open: true,
        inline: true
    },
//命令
es6": "webpack-dev-server --config webpack.es6.js --inline --open"
<body>
    <h1>...</h1>
    <!-- 
    build.js的路徑是相當(dāng)于publicPath,
    之前不能更新是我一直寫了webpack watch 出來的 dist/build.js 中的路徑,真是大錯(cuò)特錯(cuò)了。
    -->
    <script src="build.js"></script>
</body>

另外如果引入的css文件報(bào)錯(cuò) import './index.css'
試試require('./index.css')引入方式
現(xiàn)在終于修改文件可以實(shí)現(xiàn)自動(dòng)刷新了。。。踩過的坑才會(huì)印象深刻~/(ㄒoㄒ)/~~

2018年4月27日 11:26