如果针对JAR中的代码emit分析警告,该警告将包括AOT缓存路径。
例如,使用以下代码:
`
(ns foo.core)
(inc "a")
`
在 {{foo.jar}} 中,加载此代码将导致包含AOT缓存路径在消息中的诊断
WARNING: cljs.core/+, 所有参数都必须是数字,但是得到 [string number] 而不是。在行3 /Users/mfikes/.cljs/.aot_cache/1.10.126/47C5358/foo/core.cljs
在这种情况下,可能最好只指示一个相对类路径的文件名
WARNING: cljs.core/+, 所有参数都必须是数字,但是得到 [string number] 而不是。在行3 @/foo/core.cljs
如果可能,甚至可以使用如下JAR文件URL
WARNING: cljs.core/+, 所有参数都必须是数字,但是得到 [string number] 而不是。在行3 jar:file:///foo.jar!/foo/core.cljs
要重现此问题,首先使用以下命令创建 {{foo.jar}},其中包含位于 {{foo/core.cljs}} 中的 {{foo.core}} 命名空间
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}} 目录,并使用包含在 {{cljs-1.9.946.jar}} 中的1.9.946 uberjar
java -cp cljs-1.9.946.jar:foo.jar clojure.main -m cljs.repl.node
在这种情况下,{{(require 'foo.core)}} 仍然引用本地缓存目录
WARNING: cljs.core/+, 所有参数都必须是数字,但是得到 [string number] 而不是。在行3 .cljs_node_repl/foo/core.cljs
但这与向用户公开共享AOT缓存路径相比,似乎问题不大。