如果在JAR中的代码发生分析警告,则警告将包括AOT缓存路径。
例如,使用
`
(ns foo.core)
(inc "a")
`
在{{foo.jar}}中,加载此代码将导致一条包含AOT缓存路径的消息的诊断
WARNING: cljs.core/+,所有参数必须是数字,得到[字符串数字]代替。在第3行/Users/mfikes/.cljs/.aot_cache/1.10.126/47C5358/foo/core.cljs
在这种情况下,可能只指示相对于类路径的文件名会更好
WARNING: cljs.core/+,所有参数必须是数字,得到[字符串数字]代替。在第3行@/foo/core.cljs
如果可能,甚至可以使用类似这样的JAR文件URL
WARNING: cljs.core/+,所有参数必须是数字,得到[字符串数字]代替。在第3行jar:file:///foo.jar!/foo/core.cljs
要重现,首先使用以下命令创建{{foo.jar}},其中{{foo.core}}命名空间在{{foo/core.cljs}}中
jar cvf foo.jar foo
然后使用1.10.126的uberjar(在此重命名为{{cljs-1.10.126.jar}})来启动Node REPL
java -cp cljs-1.10.126.jar:foo.jar clojure.main -m cljs.repl.node
并且评估
(require 'foo.core)
要看到使用1.9.946得到的结果,请删除{{.cljs_node_repl}}目录,并使用1.9.946的uberjar(在此重命名为{{cljs-1.9.946.jar}})
java -cp cljs-1.9.946.jar:foo.jar clojure.main -m cljs.repl.node
在这种情况下,{{(require 'foo.core)}}仍然引用本地的缓存目录
WARNING: cljs.core/+,所有参数必须是数字,得到[字符串数字]代替。在第3行.cljs_node_repl/foo/core.cljs
但与向用户公开共享AOT缓存路径相比,这似乎不那么有问题。