请在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》)。

感谢 Alex,

这有点悲剧,从快速入门(《https://script.clojure.org/guides/quick-start》)然后跳转到编译器选项(《https://script.clojure.org/reference/compiler-options》),

我认为我另一个没有打算使用 webpack 的因素也导致我没有考虑过去看 webpack 指南(其中提到了 build.edn)。

在阅读了文章中的示例后,我会把您的回答标记为已接受。:)
如果有可以改进的地方,请在 https://github.com/clojure/clojurescript-site/issues 上提出问题。
感谢 Alex,
I will try to find a way how to contribute in the future (as I really like ClojureScript, it's awesome! :D).

Best,
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),否则将无法工作。

...