entry 中使用 webpack/hot/only-dev-server 打包报错,没有刷新页面,错误信息是
The following modules couldn't be hot updated: (They would need a full reload!)
测试代码是这样的
// t.js
module.exports = () => {
console.log(33123);
};
// entry.js
import test from './test/t.js';
test();
修改 t.js 后,webpack 热加载不了
参考配置:
webpack.config.js
:entry.js
加上这段代码补充答案 (个人见解,有误请指出):
1.其实
webpack-dev-server
和Hot Module Replacement(HMR)
是两个分开的功能,并不是加上--hot
就能热替换。2.启动服务时加上
--hot
或者配置hot:true
的结果都是往plugin
里添加new webpack.HotModuleReplacementPlugin()
, 即:所以这三种方式都可以让webpack支持HMR的功能。
3.官方文档里说了
HMR is “opt-in”
,说白了就是它只是提供了一些接口给你,至于怎么个替换要你自己来写代码咯,但只有被accept
的代码才能进行热替换,所以react
有react-hot-loader
,vue
有vue-loader
,这些插件已经包含了热替换的相关代码。4.所以解决方法就是
accept
你的模块,让它能够进行热替换,也就是上面的代码。如果你不想手动去做,这里有个小插件相关阅读:
Webpack 用来做模块热替换(hot module replacement)
HMR doc