vagrant - 使用 vagrant 时 Figwheel 无法热重载或更新文件保存

标签 vagrant clojurescript luminus figwheel

当使用 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/

相关文章:

node.js - 如何将 ClojureScript Node REPL 连接到我的 :node-library shadow-cljs project?

javascript - Clojurescript 中的货币格式

clojure - 为什么我不能在 js->clj 生成的序列中调用 seq 函数?

Laravel Homestead 每个项目安装 Bash 别名命令未找到

ruby - Ubuntu 和 bcrypt

Apache 无法在 Vagrant 上启动

ajax - Clojurescript 序列化表单 AJAX POST

postgresql - 如何使用 Luminus 连接到 Heroku 中的 PostgreSQL?

ruby - Recipe : newrelic-infra 的未定义方法 `poise_service_user'