如果为一个 JAR 文件中的代码发出分析警告,警告信息将包括 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}} 命名空间放在 {{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)
要 Seeing"What you get with 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/+, 所有参数必须是数字,但得到了 [string number] 而不是。在行 3 .cljs_node_repl/foo/core.cljs
但这似乎比暴露共享 AOT 缓存路径的问题要小。