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.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,太棒了! :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),否则不会生效。

...