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工单,我是通过ClojureScript的Clojurians频道的人推荐到这里来对问题进行分类的,然后如果需要的话,就会有人打开JIRA问题。

我记得我一开始并没有立即清楚代码是在那个子表达式尝试获取相对路径的哪一部分,以及使用该路径会有什么意义,所以我还没有找到问题所在的地方进行修复。
我开始调查这个问题,但上面的例子并不是一个完整的复现案例。很明显,我们传给`lib-rel-path`的值并不像预期那样,我们需要了解这是如何发生的。你能否在CI之外复现这个问题?谢谢。
嗨又来了,

感谢您查看这个错误。我制作了这个可以在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. bash repro.sh

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

[Figwheel] 编译构建测试失败,耗时28.338秒。
【警告:Figwheel:编译异常】编译异常:/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
...