请在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不正确。

破坏性变化来自这一行

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

...