HMR 热重载 module.hot.accept回调不调用的原因。

module.hot.accept(['../example.js'], function () {
    console.log('hot');
  });

如果你使用了module.hot.accept,发现监听的example.js变化后,虽然会执行热重载,但是回调却没有调用。有可能是因为监听的文件没有被使用到。只有把要监听的文件引入项目中,HMR才能知道是哪个module被改动,从而更新对应的module

如果文件没被引入项目里面,那么example.js就不会被打包进module,那么何来module hot replacement呢[doge]。

我们可以通过两种情况下HMR对浏览器的通知证明上面的说法:

  1. example.js没有被引入项目,更新example.js,可以看到HMR通知浏览器的hot-update.json中,没有指定要更新的chunk

    image.png

  2. 把example引入项目中,更新example.js,可以看到HMR通知浏览器的hot-update.json中,指出了是chunk-vendors这个module的变更,于是触发热重载,并触发module.hot.accept的回调。

    image.png

你可能感兴趣的:(HMR 热重载 module.hot.accept回调不调用的原因。)