请分享您的想法在2024年Clojure调查中!

欢迎!请参阅关于页面了解更多该系统的工作方式信息。

0
ClojureScript
编辑

你好,

我正在尝试将下面的 cljs.main 选项通过 CLI 转换为

$ clj -m cljs.main          \
      -d public/js/compiled \
      -o public/js/main.js  \
      -O advanced           \
      -c hello-world.core

编码到 deps.edn

{:deps {org.clojure/clojurescript {:mvn/version "1.10.764"}
        reagent {:mvn/version "1.0.0-alpha2"}}
 :main "hello-world.core"
 :optimizations :advanced
 :output-dir "public/js/compiled"
 :output-to "public/js/main.js"}

然后用以下方式执行它

clj -m cljs.main -co deps.edn

但是似乎不起作用。

使用由生成的 main.js 文件我也遇到了以下错误

main.js:314 Uncaught TypeError: Cannot read property 'mg' of undefined
    at Mb (main.js:314)
    at Tn (main.js:699)
    at Rn (main.js:698)
    at Nn.h.Me (main.js:718)
    at Function.Wn.A (main.js:710)
    at Nn.h.Le (main.js:718)
    at Function.Wn.j (main.js:710)
    at ep (main.js:761)
    at main.js:761

一些想法

  • 我是不是缺少 CLI 选项?或者 deps.edn 的键/值对缺失?
  • 我是不是用错了;CLI,deps.edn 或者都是?
  • 或者是目前支持得不够好,所以我应该只坚持使用 CLI?

2 答案

0

已选择
 
最佳回答

您似乎将 deps.edn 混淆与 build.edn (https://script.clojure.org/guides/webpack),:deps 之外的键在 deps.edn 文件中都是无效的。

谢谢Alex,

这有点令人遗憾,从快速入门(https://script.clojure.org/guides/quick-start)到一个跳转到编译器选项(https://script.clojure.org/reference/compiler-options),始终没有提到 build.edn,所以我认为这些选项适合 deps.edn。

我认为其他因素是我根本不想使用webpack,这也使我甚至没有考虑去webpack指南里看看(其中提到了 build.edn)。

在我阅读并尝试了那篇文章中的例子后,我会将您的回答标记为已接受。:)
如果有可以改进的地方,请在最合适的地点https://github.com/clojure/clojurescript-site/issues报告问题。
谢谢Alex,
将尝试找到一种方法在将来为ClojureScript做出贡献(因为我非常喜欢ClojureScript,它太棒了!:D)。

最好的祝愿,
0

编辑了

如@alexmiller所指出,
build.edn 应该被使用(可以是任何名字,例如 lol.edn),而不是 deps.edn,因为 deps.edn 不识别示例中提到的编译选项键。

所以,对应的是

$ clj -m cljs.main          \
      -d public/js/compiled \
      -o public/js/main.js  \
      -O advanced           \
      -c hello-world.core

*.edn(例如 build.edn)中是

{:main "quick-start.core"
 :optimizations :advanced
 :output-dir "public/js/compiled"
 :output-to "public/js/main.js"}

然后通过以下命令执行

$ clj -m cljs.main  \
      -co build.edn \
      -c

注意最后的 -c--compile),否则将不会工作。

...