请在2024年Clojure状态调查中分享您的看法!

欢迎!请参阅关于页面了解更多关于此平台的信息。

0
ClojureScript
编辑

你好,

我正在尝试使用CLI将以下cljs.main选项翻译为

$ 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,它太棒了! :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),否则将无法正常工作。

...