当使用 Vagrant 盒运行Figwheel时,似乎没有注意到文件更改,因此Figwheel不会更新/重新加载页面。
最佳答案
在花了几个小时试图弄清楚发生了什么之后,最终归结为Figwheel如何检测文件更改。
为了检测文件更改,figwheel 使用 hawk library反过来,它使用操作系统告诉 hawk 文件已更新。由于 vagrant 默认使用 vboxsf,因此没有底层更新机制来提供文件已更改的更新,请参阅 here 。要解决这个问题,我们只需要告诉figwheel,从而告诉hawk,轮询文件更改:
:figwheel {:hawk-options {:watcher :polling}
只需将其弹出到您的 profile.clj 中,这将允许 Figwheel 在保存文件后看到更改,尽管轮询确实需要一段时间才能获取更改,因此请稍等一下。
但这只能解决一半的问题,因为 Figwheel 仍然需要事件的 Websocket 连接来实际推送代码更改。由于 vagrant 虚拟机是网络上的一台单独的机器,并且要求您将此 websocket 公开给不仅仅是本地主机,因此情况变得很复杂。这可以通过在 project.clj
中的 figwheel
映射中添加另一个键来实现:
:figwheel {:server-ip "0.0.0.0"}
然后在 vagrantfile 中公开Figwheel Websocket端口:
config.vm.network "forwarded_port", guest: 3449, host: 3449
这应该修复 Vagrant 上的无花果轮!
关于vagrant - 使用 vagrant 时 Figwheel 无法热重载或更新文件保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493061/