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

欢迎!有关如何使用本网站的更多信息,请参阅关于页面。

+1
... ClojureScript

有一个旧的错误,我再次遇到了,这次是在一个deps.edn项目和CI设置中。旧错误:[https://github.com/emezeske/lein-cljsbuild/issues/490](https://github.com/emezeske/lein-cljsbuild/issues/490) - 注意其他人报告说更改源目录名称或将它克隆到另一个名称不同的目录是解决方案。

以下是代码的重跑版本,[https://github.com/clojure/clojurescript/blob/r1.10.520/src/main/clojure/cljs/closure.clj#L1851](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](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之外重现这个问题吗?谢谢。
又来了,

感谢您查看这个错误。我为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
...