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

使用vagrant时,Figwheel不会在文件保存时重新加载或更新,vagrant,clojurescript,luminus,figwheel,Vagrant,Clojurescript,Luminus,Figwheel,当使用vagrant box从运行figwheel时,似乎没有注意到文件更改,因此figwheel不会更新/重新加载页面。在花费数小时试图弄清楚发生了什么之后,最终归结为figwheel如何检测文件更改 为了检测文件的更改,figwheel使用,后者反过来使用操作系统告知hawk文件已更新。由于vagrant默认使用vboxsf,因此没有底层更新机制来提供文件已更改的更新,请参阅。要解决此问题,我们只需告诉figwheel,以及hawk,对文件更改进行轮询: :figwheel {:hawk-o

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

在花费数小时试图弄清楚发生了什么之后,最终归结为figwheel如何检测文件更改

为了检测文件的更改,figwheel使用,后者反过来使用操作系统告知hawk文件已更新。由于vagrant默认使用vboxsf,因此没有底层更新机制来提供文件已更改的更新,请参阅。要解决此问题,我们只需告诉figwheel,以及hawk,对文件更改进行轮询:

:figwheel {:hawk-options {:watcher :polling}
只要在your profile.clj中弹出这个文件,figwheel就可以在文件保存后看到更改,尽管轮询需要一段时间才能获取更改,所以请稍等

然而,这只解决了问题的一半,因为figwheel仍然需要一个活动的websocket连接来实际推动代码更改。这是复杂的事实,一个流浪的虚拟机是一个独立的机器在网络上,并要求您公开这个websocket的不仅仅是本地主机。这可以通过向
项目中的
figwheel
映射添加另一个键来实现。clj

:figwheel {:server-ip "0.0.0.0"}
然后在文件中公开figwheel websocket端口:

config.vm.network "forwarded_port", guest: 3449, host: 3449

这应该能把figwheel固定在流浪汉身上

FYI遇到了类似的问题,正在研究以下解决方案

引用

观察任务在码头工人/流浪者中不工作

场景:对Docker/Vagrant装载的文件所做的更改 通过NFS的来宾和主机操作系统;未收到文件系统事件 没错

解决方案:在这些环境中使用rsync,因为NFS不支持 inotify。您可能还希望在来宾操作系统和中运行repl服务器 从主机连接到它


我很难让rsync在windows上正常运行,但这也是一个有效的解决方案,因为我可以说windows存在一些问题,但是在这个领域有一些专门针对windows的解决方法