2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面,了解更多关于其工作原理的信息。

0
ClojureScript

当编译一个文件时

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

撤消这个提交可以修复问题。

1 答案

0
 
最佳答案

感谢反转 - 说实话,对原始更改的理由已不再确定 - 又回到原始问题中跟踪 - https://clojure.atlassian.net/browse/CLJS-3383

...