如果不是坚持己见,我的目的是尝试有逻辑地工作解决这个问题(“发生了这样的事情,但我缺少这些必要的信息”)而不是从解决方案开始(“只改变一些代码”)来确保我们正在做正确的事情。
截至目前,您还没有描述一个详细、可复现的情景来重现实际问题。没有这些,我们没有任何方式去考虑其他可能的解决方案或测试和验证特定的更改是否解决了问题。你声称这个问题很普遍,且经常被报道。如果是这样,应该很容易指出一篇这样的讨论或在描述情景中提到它,这就是我所需要的。
我试图用tools.namespace工具重复这种类型的错误,唯一的方法是在REPL中使用require,而改变这条消息不会提供任何额外的信息。
user=> (require '[foo :as bar])
执行错误(IllegalStateException)在用户/eval1664(REPL:1)。
别名bar在用户命名空间中已存在,别名为foo
注意在Clojure 1.10.0+中,堆栈的第一行不会打印出来,因此您看不到“命名空间”(工具命名空间readme中的示例较旧)。说“别名bar(指代foo)在用户命名空间中已存在,别名为foo”在理解或解决问题时没有提供任何额外的信息,对吧?