2024年Clojure调查中分享您的想法!

欢迎!有关如何工作的更多信息,请参阅关于页面。

0投票
ClojureScript
在1.10.x版本的{{material-components-web}}中,我在npm-deps解析上遇到了回归问题。对于子依赖项,它无法正确解析模块路径。当我需要例如{{@material/snackbar}}时,会因{{未捕获错误:模块$$material$base$component中未定义nameToPath}}而失败。

重现步骤


yarn add "@ cljs-oss/module-deps" "@material/snackbar"

cat <<EOF > deps.edn
{:deps {org.clojure/clojurescript {:mvn/version "1.10.145"}}}
EOF

clj -m cljs.main -d out -e "(require '[\"@material/snackbar\"])"


在1.9.946中分辨率工作正常

17个答案

0投票

评论由:dnolen发表

此票据只是需要更多信息。在报告中,首先进行git bisect是一个很好的起点。然后Someone需要确定这是否是ClojureScript或Google Closure造成的。如果是后者,我们无法做太多。

0投票

评论由:rarous发表

我甚至可以在1.10.63上重现这个回归,以缩小范围。在那之后,我将准备向后兼容的重现和bisect。

0投票

评论由:rarous发表

已经进行了bisect,并在#CLJS-2389(GCC更新)中引入了它。

0投票

评论由:rarous发表

繁殖代码

0投票

评论由:rarous发表

head -2 out/node_modules/@material/snackbar/index.js 以 {{goog.require("module$$material$base$index");}} 结尾时,即为出错的情形。

0投票

评论由:dnolen发表

我可以复现并看到依赖索引文件 cljs_deps.js 看起来不正确,因此它不起作用并不令人惊讶。

0投票

评论由:dnolen发表

进一步挖掘,这可能是 Closure 的问题,我们只能等待上游的修复。

0投票

评论由:dnolen发表

这是一个 Closure Compiler 的问题。我们需要提交补丁,并为下一个 Closure 版本的发布进行必要的修改,这次变更 https://github.com/swannodette/closure-compiler/commit/58012d3f1068aa588a47dc34ec6f39413aa59e62 解决了我遇到的模块名称问题。

0投票

评论由:rarous发表

很好,谢谢 David。

0投票

评论由:dnolen发表

PR Closure Compiler https://github.com/google/closure-compiler/pull/2847

0投票

评论由:dnolen发表

我们能在这个工单中添加一个非平凡的语句,该语句应该在 require 之后生效吗?

0投票

评论由:dnolen发表

我想出如何测试这个了 - 实际上与 master 和我的 Closure Compiler PR 一起确实看起来已经解决了。

0投票

评论由:rarous发表

对不起,我之前没有回复,我昨天参加了 Code Retreat。这是一个 DOM 组件,所以非平凡的示例需要在修改了 {{index.html}} 的浏览器 REPL 中运行。我认为,如果发出的 {{goog.require}} 正确,其他一切都将正常工作。非常感谢您的修复。希望您的 GCC PR 能尽快被接受。{{1.10}} 看起来非常稳定和快速。

0投票

评论由:dnolen发表

Closure Compiler PR 现在有测试案例。它可能需要在审查后进行一些小的调整,但希望这个修复能够最迟在今年5月份发布。

0投票

帖子由:tkjone

看来关于 google closure 的 PR 已经被审查了 https://github.com/google/closure-compiler/pull/2847

...