2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参见 关于页面 了解更多关于该功能的信息。

0
ClojureScript
编辑者

你好,

我正在尝试使用 CLI 将以下 cljs.main 选项转换到 deps.edn

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

然后使用

{: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 之外的所有键都是无效的。

by
感谢Alex,

这有点令人遗憾,从快速入门指南( https://script.clojure.org/guides/quick-start )跳转到编译器选项( https://script.clojure.org/reference/compiler-options ),从来没有提到build.edn,所以我假设选项对deps.edn是合适的。

我认为另一个因素是我无意使用webpack,这也让我根本没考虑过去看webpack指南(其中确实提到了build.edn)。

我会在读完这篇文章中尝试的示例后再将您的回答标记为已接受。:)
by
如果可以做出改进,请在https://github.com/clojure/clojurescript-site/issues 中提交问题。
by
感谢Alex,
将尝试在未来找到一种方式做出贡献(因为我很喜欢ClojureScript,它太棒了!:D)。

最好的问候,
0
by
编辑 by

如@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),否则不会起作用。

...