我这里有一个小型的(不是极简型)仓库:
https://github.com/au-phiware/boot-parsets
该仓库包含一个 es6 模块和一个 cljs 文件,它们都依赖于一个 node 模块,产生了以下错误。
正在编写 main.cljs.edn...
编译 ClojureScript...
• main.js
java.lang.Thread.run Thread.java: 748
java.util.concurrent.ThreadPoolExecutor$Worker.run ThreadPoolExecutor.java: 617
java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java: 1142
java.util.concurrent.FutureTask.run FutureTask.java: 266
...
clojure.core/binding-conveyor-fn/fn core.clj: 2022
adzerk.boot-cljs/compile-1/fn boot_cljs.clj: 160
adzerk.boot-cljs/compile boot_cljs.clj: 72
boot.pod/call-in* pod.clj: 413
...
org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 102
org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke ClojureRuntimeShimImpl.java: 109
...
boot.pod/call-in* pod.clj: 410
boot.pod/eval-fn-call pod.clj: 359
clojure.core/apply core.clj: 657
...
adzerk.boot-cljs.impl/compile-cljs impl.clj: 151
cljs.build.api/build api.clj: 205
cljs.closure/build closure.clj: 2595
cljs.closure/handle-js-modules closure.clj: 2496
cljs.closure/process-js-modules closure.clj: 2389
cljs.closure/convert-js-modules closure.clj: 1680
com.google.javascript.jscomp.Compiler.parse Compiler.java: 995
com.google.javascript.jscomp.Compiler.parseInputs Compiler.java: 1731
com.google.javascript.jscomp.deps.ModuleLoader.<init> ModuleLoader.java: 92
com.google.javascript.jscomp.deps.ModuleLoader.resolvePaths ModuleLoader.java: 276
java.lang.IllegalArgumentException: Duplicate module path after resolving: /home/corin/Projects/Demos/boot-parsets/node_modules/d3/d3.js
clojure.lang.ExceptionInfo: Duplicate module path after resolving: /home/corin/Projects/Demos/boot-parsets/node_modules/d3/d3.js
来自: :boot-cljs
clojure.lang.ExceptionInfo: Duplicate module path after resolving: /home/corin/Projects/Demos/boot-parsets/node_modules/d3/d3.js
行: 33
运行 `boot cljs` 重复此问题。
此补丁在预处理输入源文件之前从集合中删除重复项。使用此补丁后,仓库可以正确编译。