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

欢迎!请参阅 关于 页面以获取有关如何使用此处的更多信息。

+1
ClojureScript

这是一个已经困扰其他人的老错误,现在我再次遇到,这次在一个 deps.edn 项目和一个 CI 环境中。老错误: https://github.com/emezeske/lein-cljsbuild/issues/490 - 注意其他报告此错误的人提到重命名源目录或克隆到不同命名的目录是一个解决方案。

以下是代码的重现,可以在 https://github.com/clojure/clojurescript/blob/r1.10.520/src/main/clojure/cljs/closure.clj#L1851 找到,其中实际值已替换。

cljs.closure=> *lp
"cljsjs/openlayers/development/"
cljs.closure=> *p
"/codebuild/output/src923210442/src/github.com/solita/mnt-teet/app/frontend/target/public/cljs-out/tests/l/events/eventtype.js"
cljs.closure=> (subs *p (+ (inc (.lastIndexOf *p *lp)) (.length *lp)))
"/src/github.com/solita/mnt-teet/app/frontend/target/public/cljs-out/tests/l/events/eventtype.js"

最终抛出异常的是这里的 (io/file out-dir out-name) 调用
https://github.com/clojure/clojurescript/blob/r1.10.520/src/main/clojure/cljs/closure.clj#L2023

因为它从 rel-output-path 调用返回了一个以 "/" 开头的路径作为第二个参数。

openlayers 依赖来自 deps.edn 中的这一行

cljsjs/openlayers {:mvn/version "4.4.1-1"}

1 答案

0

对此问题是否已开放相应的 JIRA 工单?如果你已经找到了解决方案,欢迎提交补丁。

你好!

非常感谢你的回复!

暂时还没有JIRA工单,我是通过Clojurians中的#clojurescript小组的成员指引过来的,他们帮我定位了这个问题。如果需要,相关负责人会打开JIRA工单。

我记得我在那段时间里并不能立刻弄清楚代码在子路径表达式中试图获取的相对部分,以及所使用的路径会具有什么重要性,所以我没有进行到修复这一步。
我已经开始解决这个问题,但上述内容并不是一个完整的重现案例。很明显,我们在`lib-rel-path`中得到了意外的值,我们需要了解这是如何发生的。你能否在CI之外重现这个问题?谢谢。
你好再次!

感谢你查看这个bug。我在Docker中创建了一个重现的例子,这样应该与环境无关
https://gist.github.com/erno/9abd8e928302503e932a61e5663eeeb5

使用方法:

0. 将上面的gist内容粘贴到名为Dockerfile的文件中

1. 运行命令docker build -t cljs-bug-repro .

2. 运行命令docker run -it cljs-bug-repro

3. 运行文件repro.sh

如果你在Docker之外的开发环境中重建相同的嵌套子目录以构建目录,并像Dockerfile中那样执行git checkout和run clojure -A:test,这可能在你的开发环境中也能重现。
by
一位同事又遇到了这个问题。这促使我重新检查上述复现是否仍然有效。确实是。

[Figwheel] 编译构建测试失败,耗时28.338秒。
[Figwheel:WARNING] 编译异常:/src/github.com/solita/mnt-teet/app/frontend/target/public/cljs-out/tests/l/events/eventtype.js 不是相对路径
执行错误(IllegalArgumentException)在 cljs.closure/write-javascript (closure.clj:2031)。
/src/github.com/solita/mnt-teet/app/frontend/target/public/cljs-out/tests/l/events/eventtype.js 不是相对路径

完整报告在
/tmp/clojure-594316621683314904.edn
...