【问题标题】:Can't build ClojureScript quickstart with optimizations无法通过优化构建 ClojureScript 快速入门
【发布时间】:2017-11-15 06:21:04
【问题描述】:

我在使用 ClojureScript quickstart 的“生产构建”部分遇到问题。具体来说,当我运行时:java -cp "cljs.jar;src" clojure.main release.clj 我得到一个 java 异常:

Exception in thread "main" java.nio.file.InvalidPathException: Illegal char <:> at index 2: /C:/dev2/Experiments/cljscript/hello_world/out/cljs/core.js, compiling:(C:\dev2\Experiments\cljscript\hello_world\release.clj:3:1)

我在 Windows 上执行此操作,我怀疑 google 闭包编译器不喜欢 Windows 样式的路径,特别是冒号。我的 release.clj 是:

(require 'cljs.build.api)

(cljs.build.api/build "src"
{
    :output-to "out/main.js"
    :optimizations :advanced
})

(System/exit 0)

我正在调用它:java -cp "cljs.jar;src" clojure.main release.clj。如果我注释掉 :optimizations 行,则构建成功。

我的确切设置在这里:https://github.com/PaulRobson/cljs-quickstart

【问题讨论】:

  • 嘿! ClojureScript 在 Windows 上存在问题并非不可能,尤其是在使用 :none:advanced(最常用)以外的优化模式时。您是否有机会对您的问题进行最小限度的复制?然后有人可以查看一下,可能会发现您的设置中的问题或重现错误(如果有的话)。
  • 另外,示例中的代码不是 windows 样式的路径。 Windows 样式将使用反斜杠,即out\main.js
  • @MartinKlepsch - 我在问题中添加了一个 git repo。
  • @Jim 感谢您的建议。我试过了,但没有帮助。我认为它实际上令人窒息:当它构建完整路径时,例如 /C:/dev2/etc
  • 我也打过这个。我发现这是 Google 的 Clousure 编译器 https://github.com/google/closure-compiler/issues/2611 的一个未解决问题

标签: clojurescript


【解决方案1】:

这是一个已知问题https://dev.clojure.org/jira/browse/CLJS-2401

一种解决方法是使用带有连字符的输出目录,如

(require 'cljs.build.api)

(cljs.build.api/build "src"
{
    :output-to "out-foo/main.js"
    :optimizations :advanced
})

(System/exit 0)

【讨论】:

  • 这为我解决了问题。不过,我确实必须在它工作之前删除我的 out 目录。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
相关资源
最近更新 更多