我一直在尝试让 shadow-cljs 热重载工作,但我没能,我在我的 project.clj 文件中尝试了多个设置,但没有一个有效。这就是我的 project.clj 的样子:
:shadow-cljs {:nrepl {:port 8777}
:builds {:app {:target :browser
:output-dir "resources/public/js/compiled"
:asset-path "/js/compiled"
:modules {:app {:init-fn my-app.core/init
:preloads [devtools.preload]}}
:devtools {:http-root "resources/public"
:http-port 8080
:http-handler my-app.handler/dev-handler
}}}}
:aliases {"watch" ["with-profile" "dev" "do"
["shadow" "watch" "app"]]}
:profiles
{:dev
{:dependencies [[binaryage/devtools "1.0.2"]]
:source-paths ["dev"]} ;; <- this is the default from the template pointing to "dev", I've tried chaning it multiple times.
}
当我运行时,lein watch
我知道它只是在运行shadow-cljs watch app
应该运行我的“应用程序”构建。这就是我的开发处理程序的样子(在 中引用:http-handler
):
(def dev-handler (-> api-routes
wrap-params
wrap-json-response
wrap-keyword-params
wrap-json-params
wrap-multipart-params
wrap-reload
(wrap-resource "public")
(utils/cors-wrapper utils/cors-policy)
(utils/wrap-content-type-security)
(wrap-defaults (assoc-in site-defaults [:security :anti-forgery] false))))
我尝试将我的 :dev 配置文件中的源路径更改为["src"]
,甚至尝试将所有内部文件夹包括在内["src/clj" "src/cljs" "src/cljc"]
,但没有成功。我什至尝试从头开始创建一个新应用程序,lein new re-frame
不做任何更改并运行 lein watch,代码编译并且一切看起来都很好,但是每当我更改 cljs 文件(例如 views.cljs)中的某些内容时,都不会重新渲染/重新加载,我已经访问了 localhost:9630,它为您提供了一个 shadow-cljs 仪表板,其中列出了您的构建,然后单击“强制编译”按钮并在我的应用程序页面中看到 clojurescript 动画,但没有再次重新渲染/重新加载。我注意到当 shadow-cljs 完成编译时,编译了 0 个文件,它是从其他地方获取源路径配置吗?这就是我的样子
编辑:也许值得一提的是,我在 MobaXterm 中使用 xfce 终端和来自 WSL2 的 emacs 运行 ubuntu,这可能与代码/应用程序而不是热重载有关吗?