如果这感觉像是我在固执己见,但我正试图有系统地处理这个问题(“发生这种情况,缺少这个必要信息”),而不是从一个解决方案(“只需要修改一些代码”)开始,以确保我们正在做正确的事情。
在这个时候,您还没有详细描述一个可重复的、可以复制实际问题的场景。没有这个,我们无法考虑其他可能的解决方案或测试并验证特定的更改是否解决了问题。您声称这个问题既常见又经常被报道。如果是这样,应该很容易指出其中一个讨论或描述场景,这正是我所需要的。
我尝试使用 tools.namespace 工具来重现这种类型的错误,但唯一成功的方法是在 repl 中使用 require,且在不改变这条消息的情况下并没有获得任何额外的信息。
user=> (require '[foo :as bar])
执行错误 (IllegalStateException) 在 user/eval1664 (REPL:1)。
别名 bar 已经在 user 命名空间中存在,正在代理 foo
请注意,在 Clojure 1.10.0+ 中,这里没有打印栈顶行,所以您看不到“命名空间”(在 tools.namespace 读取器中给出的示例更旧)。说“别名 bar (打算引用 foo) 在用户命名空间中已经存在,正在代理 foo”既不能提供额外的理解信息,也不能帮助解决该问题,对吗?