很抱歉如果这感觉像我在固执己见,但我正在有条不紊地解决这个问题("这是发生的事情,这是我所缺少的必要信息")而不是从一个解决方案("只是改变一些代码")开始,以确保我们在做正确的事。
到目前为止,您还没有描述一个详细、可重复的场景来重复实际的问题。没有那样的话,我们就没有办法去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" 对于理解或解决问题并没有提供更多的信息,对吧?