我似乎并不知道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