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.edn 文件中除了 :deps 之外的所有键都是无效的。

感谢 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),否则将无法正常工作。

...