使用vagrant时,Figwheel不热重新加载或更新文件保存

时间:2016-05-27 22:19:56

标签: vagrant clojurescript luminus figwheel

当使用流浪盒运行figwheel时,似乎没有注意到文件更改,因此figwheel不会更新/重新加载页面。

2 个答案:

答案 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服务器   从主机连接到它。