欢迎!请参阅关于页面,了解更多关于其工作原理的信息。
当编译一个文件时
clj -Sdeps '{:paths ["src"] :deps {org.clojure/clojurescript {:mvn/version "1.11.121"}}}' -M -m cljs.main -co '{:main org.foo.myscript}' --compile
编译将正常工作,但之后如果您运行cljs.main --repl,浏览器repl将启动,但在其上评估形式将无法工作,因为评估永远不会完成。
在1.11.60中这些正是相同的命令工作正常。
经过一些调试,问题似乎是当前编译器从未
document.write('<script>goog.require("clojure.browser.repl.preload");</script>');
添加到生成的js文件中。
这是由
https://github.com/clojure/clojurescript/blob/master/src/main/clojure/cljs/closure.clj#L2500-L2501
不添加preload,因为:browser-repl不是true。
破坏性变化来自这一行
https://github.com/clojure/clojurescript/blob/master/src/main/clojure/cljs/cli.clj#L498
删除了:browser-repl选项,因为我们只是在编译,没有repl涉及。
看起来这个行为是由这个提交明确改变的
https://github.com/clojure/clojurescript/commit/9c01d9b0a70ada1cb17cf3ce65ae93d76d0d3b08
撤消这个提交可以修复问题。
感谢反转 - 说实话,对原始更改的理由已不再确定 - 又回到原始问题中跟踪 - https://clojure.atlassian.net/browse/CLJS-3383