2024年Clojure状态调查!(分享您的想法!

欢迎!有关本网站的更多信息,请参见关于页面。

0
tools.namespace

当尝试加载一个文件,其命名空间声明与文件名不匹配时,A tools.namespace依赖关系跟踪器可能会陷入不一致的状态。

复制步骤

在一个新的Clojure项目中,在类路径上创建一个名为{{foo.clj}}的文件,包含命名空间声明{{(ns wrong-ns-declaration-for-foo)}}。

然后在REPL中

`
user=> (use 'clojure.tools.namespace.repl)
nil
user=> (refresh)
:reloading (wrong-ns-declaration-for-foo)
:error-while-loading wrong-ns-declaration-for-foo

`

编辑文件{{foo.clj}},使其命名空间声明正确:{{(ns foo)}}。

但在REPL中,{{refresh}}仍然不起作用

`
user=> (refresh)
:reloading (foo wrong-ns-declaration-for-foo)
:error-while-loading wrong-ns-declaration-for-foo

`

自tools.namespace 0.2.5以来,解决方法是通过调用{{clear}}。

user=> (clear){} user=> (refresh) :reloading (foo) :ok

2 答案

0

评论者:jafingerhut

这样的文件会给所有类型的工具带来问题,而不仅仅是tools.namespace。我不知道所有后果,但这里列出了两条:[链接](https://github.com/jonase/eastwood#check-consistency-of-namespace-and-file-names)

我在Eastwood中发现这样的文件时添加了警告,并在这些问题得到纠正之前不对任何文件执行linting检查。

0
参考文献:[链接](https://clojure.atlassian.net/browse/TNS-24) (由stuart.sierra报告)
...