给定以下项目
;; 文件 src/foo.cljs
(ns foo
(:require [cljs.js :as cljs]))
(defn -main []
(enable-console-print!)
(println "hello"))
;; 文件 deps.edn
{:deps {org.clojure/clojure {:mvn/version "1.10.0-RC5"}
org.clojure/clojurescript {:mvn/version "1.10.439"}
}
:aliases {:build-simple {:main-opts ["-m" "cljs.main" "-O" "simple" "-co" "{:pretty-print,false,:optimize-constants,true,:static-fns,true}" "-d" "out" "-c" "foo"]}}}
出现以下堆栈跟踪
线程 "main" 中发生异常:clojure.lang.ExceptionInfo:编译文件失败:out/cljs/core.cljc {:file #object[java.io.File 0x7e7f3cfd "out/cljs/core.cljc"]}
...
原因:clojure.lang.ExceptionInfo:断言失败:检测到循环依赖,cljs.core -> cljs.core
...
原因:java.lang.AssertionError:断言失败:检测到循环依赖,cljs.core -> cljs.core
...
当将 {{:optimize-constants}} 设置为 {{false}} 或当不要求 {{cljs.js}} 时,不会出现此异常。
此设置在 CloJS 网站在以下指南中提出:
https://script.clojure.org/guides/self-hosting