2

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

4

2 回答 2

3

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

为了检测文件更改,figwheel 使用hawk 库,该库又使用操作系统来告诉 hawk 文件已更新。因为 vagrant 默认使用 vboxsf ,所以没有底层更新机制来提供文件已更改的更新,请参见此处。为了解决这个问题,我们只需要告诉 figwheel 和 hawk 来轮询文件更改:

:figwheel {:hawk-options {:watcher :polling}

只需将其弹出到您的 profile.clj 中,这将允许 figwheel 在文件保存后查看更改,尽管轮询需要一段时间才能获取更改,因此请稍等片刻。

然而,这只解决了一半的问题,因为 figwheel 仍然需要一个活动的 websocket 连接来实际推送代码更改。这很复杂,因为 vagrant vm 是网络上的一台独立机器,并且要求您将此 websocket 暴露给 localhost 以外的其他设备。这可以通过在figwheel地图中添加另一个键来实现project.clj

:figwheel {:server-ip "0.0.0.0"}

然后在 vagrantfile 中暴露 figwheel websocket 端口:

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

这应该可以解决流浪汉的问题!

于 2016-05-27T22:19:56.183 回答
1

仅供参考有类似的问题,并致力于以下解决方案

vagrant docker上的故障排除

去引用

观看任务在 Docker / Vagrant 中不起作用?

场景:通过 NFS 在来宾和主机操作系统之间对使用 Docker/Vagrant 挂载的文件进行更改;未正确接收文件系统事件。

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

于 2016-07-24T03:52:03.783 回答