lein REPL 中存在一种奇怪且非常烦人的行为,更不用说通常很耗时。
也就是说,如果我将 :reload-all 与命名空间一起使用,并且它所需的命名空间有错误,则 repl 不会告诉我有关它的任何信息。它只需要上述命名空间的最后一个有效构建,并没有通知我它这样做了。
显然,在大多数情况下,这是非常不令人满意的。因为我不会使用 :reload-all 如果所需的命名空间都没有更改,并且如果它们更改并包含错误,我非常想知道它,并且不会突然想知道为什么我正在执行代码REPL 似乎做的事情与我屏幕上的代码完全不同。
有没有办法强制这种行为?
tools.namespace 图书馆可以帮到你。
通过或重新加载代码存在已知问题。因此,不要尝试使用:(require ... :reload)(require ... :reload-all)requireclojure.tools.namespace/refresh
user> (clojure.tools.namespace.repl/refresh)
Run Code Online (Sandbox Code Playgroud)
它将扫描您的项目以查找已更改的文件/命名空间,并以正确的顺序重新加载它们及其依赖项。