如果这让你感觉我在固执己见,但我在尝试有条理地解决问题("这是发生的事情,这是我缺少的信息"),而不是从一个解决方案开始("只需要更改一些代码"),以确保我们正在做正确的事情。
到目前为止,您尚未描述一个详细且可复现的场景,该场景能够复现实际遇到的问题。没有这个场景,我们无法a)考虑其他可能的解决方案或者b)测试和验证特定的变更是否解决了问题。您声称这个问题既普遍又经常被报告。如果是这样,应该可以指向这些讨论中的一个或者描述场景,这正是我所寻找的。
我尝试使用tools.namespace工具来重现这类错误,唯一的办法是在REPL中使用require,改变这个消息并不会为我提供更多信息。
user=> (require '[foo :as bar])
执行错误(IllegalStateException)在user/eval1664 (REPL:1)。
别名bar在用户命名空间中已经存在,正在别名foo
注意,在Clojure 1.10.0+中,堆栈跟踪的顶部行在这里不会被打印出来,所以您看不到“命名空间”(tools.namespace README中的示例更老)。说“别名bar(意图指代foo)在用户命名空间中已经存在,正在别名foo”在理解或处理这个问题上并没有提供额外的信息,对吧?