当使用流浪盒运行figwheel时,似乎没有注意到文件更改,因此figwheel不会更新/重新加载页面。
答案 0 :(得分:3)
花了好几个小时试图弄清楚发生了什么事后,最终归结为figwheel如何检测文件变化。
为了检测文件更改,figwheel使用hawk library进而使用操作系统来告诉鹰文件已更新。由于vagrant默认使用vboxsf,因此没有基础更新机制来提供文件已更改的更新,请参阅here。要解决这个问题,我们只需要告诉figwheel,然后通过鹰派来轮询文件更改:
:figwheel {:hawk-options {:watcher :polling}
只需在你的profile.clj中弹出它,这将允许figwheel在文件保存后看到更改,尽管轮询需要一段时间才能获取更改,所以稍等一下。
但这只能解决问题的一半,因为figwheel仍然需要一个活动的websocket连接来实际推动代码更改。由于流浪者虚拟机是网络上的一个独立机器,并且需要将此websocket暴露给不仅仅是本地主机,因此这很复杂。这可以通过向figwheel
中的project.clj
地图添加另一个关键字来实现:
:figwheel {:server-ip "0.0.0.0"}
然后在vagrantfile中暴露figwheel websocket端口:
config.vm.network "forwarded_port", guest: 3449, host: 3449
这应该可以解决流浪者的问题!
答案 1 :(得分:1)
FYI遇到了类似的问题,并致力于以下解决方案
troubleshooting on vagrant docker
引用
Watch Task无法在Docker / Vagrant中运行?
场景:对使用Docker / Vagrant安装的文件所做的更改 客户端和主机操作系统通过NFS;未收到文件系统事件 正确。
解决方案:在这些环境中使用rsync,因为NFS不支持 inotify的。您可能还希望在guest虚拟机操作系统中运行repl服务器 从主机连接到它。