如果这感觉我过于固执,但我是试图系统地解决这个问题(“这是发生的事情,这是我缺少必要信息的地方”),而不是从一开始就以解决方案(“只是改变一些代码”)为起点,以确保我们正在做正确的事情。
在这一点上,您还没有描述一个详细、可重复的场景,以复制实际遇到的问题。没有这一点,我们就没有办法 a) 考虑其他可能的解决方案或 b) 测试和验证特定的更改是否解决了问题。您声称该问题既普遍又经常被报告。如果是这样,应该很容易指向其中一个这些讨论或描述该场景,这正是我所需要的。
我尝试使用 tools.namespace 工具来重现这种错误,但唯一成功的方法是在 repl 中使用 require,在这一步中更改该消息不会给我任何额外的信息
user=> (require '[foo :as bar])
执行错误(IllegalStateException) user/eval1664 (REPL:1).
别名 bar 已在用户命名空间中存在,别名 foo
请注意,在 Clojure 1.10.0+ 中,这里没有打印堆栈的顶部行,因此您看不到“Namespace”(tools.namespace 中的示例是较旧版本)。说“别名 bar(原本打算引用 foo)已在用户命名空间中存在,别名 foo”在理解或解决该问题上提供的信息不多,对吗?