欢迎!请参阅关于页面以了解更多关于此平台的信息。
当编译包含
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
撤销此提交可以解决问题。
已撤销感谢 - 实事求是地说,已不再确定原始更改的合理性 - 再次跟踪原始问题中 - https://clojure.atlassian.net/browse/CLJS-3383