我似乎並不知道REPL的一些重要方面,使用figwheel
或lein-autoreload
。在Clojure Repl中重新編譯函數會導致編譯器警告
如果我使用上述插件之一啓動REPL並對其中一個項目文件進行更改,我通常會收到編譯器警告。通常,這意味着我必須重新啓動REPL,這會挫敗這些插件的全部用途。
讓我給你舉個例子。我有三個文件:core.cljs
,demoscene.cljs
和objects.cljs
。它們按我提到的順序使用例如(:require [ns.demoscene :as demoscene])
。我的主要功能位於core.cljs
。
我開始使用lein figwheel
的花輪REPL,啓動我的瀏覽器,一切正常。
如果我編輯objects.cljs
功能並保存更改,我得到一個編譯器警告:
Compile Warning src/cljs/ns/demoscene.cljs
update already refers to: cljs.core/update being replaced by: ns.demoscene/update
這是一個以上的水平非常奇怪:
- 我沒有編輯
demoscene.cljs
cljs.core/update
爲什麼要替換爲ns.demoscene/update
- 如果我重新加載站點(我不重新啓動figwheel會話),一切都很好。我的更改應用等。
您能告訴我,背景中發生了什麼?我錯過了解這種情況?我需要做些什麼來避免這些警告?
如果您需要更多資源,請告訴我。
另一件值得一提的是OP所看到的是警告而不是錯誤。儘管理解警告意味着什麼非常重要,但值得強調的是,這是一個警告,而不是一個錯誤。正如你所指出的那樣,警告是關於核心功能的重新定義,正如在另一個迴應中指出的,除非你有真正的需要/理由這樣做,否則通常不是一個好主意。 –
謝謝你的回答。說實話,我不知道這樣的核心功能是存在的,儘管現在我再次讀到這個警告,這變得很清楚。我現在覺得很愚蠢...... – Joshua