记webpack的HRM失效的几个解决方案

环境:macOS
配置:vue-cli自带全家桶(webpack 2.7)

最近开了一个新项目,发现webpack的HRM失效了,折腾了半天搞定了,把过程做个记录。

1.编辑器的锅

使用自动编译代码时,可能会在保存文件时遇到一些问题。某些编辑器具有“安全写入”功能,可能会影响重新编译。
Sublime Text 3 - 在用户首选项(user preferences)中添加 atomic_save: "false"。
IntelliJ - 在首选项(preferences)中使用搜索,查找到 "safe write" 并且禁用它。
Vim - 在设置(settings)中增加 :set backupcopy=yes。
WebStorm - 在 Preferences > Appearance & Behavior > System Settings 中取消选中 Use "safe write"。
节选自:webpack中文文档

这部分问题就是有些IDE修改文件并不会直接生效,会先放到一个临时文件中。

2. macOS的问题

检测文件是否变动使用的是macOS的fsevents,通过创建fsevents的设备来实现,具体了解的不多,所以可能是权限问题导致创建不了。

sudo npm run dev 用最高权限

具体可以看Stackoverflow上的一个回答

3. 主动检查文件变动

修改web-dev-middle配置(在build/dev-server.js文件)

var devMiddleware = require('webpack-dev-middleware')(compiler, {
  publicPath: webpackConfig.output.publicPath,
  quiet: true,
  watchOptions: {
    aggregateTimeout: 300,
    poll: 1000 // 每秒轮询检查文件变动
  }
})

最后第三个方法解决了我的问题,个人理解是文件变动的通知失效了或者没正确处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值