2024年Clojure调查问卷上分享您的想法!

欢迎!请参阅关于页面了解更多关于本网站如何运作的信息。

0
ClojureScript
我在1.10.x的npm-deps解析中遇到了回归。对于子依赖,它无法正确解析模块路径。当我需要eg. {{@material/snackbar}} 时,它将因 {{Uncaught Error: Undefined nameToPath for module$$material$base$component}} 而失败。

复现步骤


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。然后需要确定这是否是由于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_docs.js 并不平衡,所以不奇怪它不起作用。

0

评论由:dnolen 发布

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

0

评论由:dnolen 发布

这是一个 Closure 编译器问题。我们需要提交补丁,然后对下一个 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 发布

我们能否将一个非平凡的表述添加到这个工单中,可能需要在导入语句之后执行它?

0

评论由:dnolen 发布

我找到了如何测试这个问题的方法 - 实际上它似乎在与 master 加上我的 Closure Compiler PR 一起使用后得到了解决。

0

评论由:rarous 发布

抱歉,我之前没有回复,因为我昨天参加了编码 retreat。这是一个 DOM 组件,因此非平凡的示例需要在修改后的浏览器 REPL 中运行 {{index.html}}。我认为,如果发出的 {{goog.require}} 是正确的,其他所有东西都将正常工作。非常感谢您的修复。我希望您的 GCC PR 能尽快被接受。{{1.10}} 看起来非常坚固且快速。

0

评论由:dnolen 发布

Closure Compiler PR 现在有一个测试用例。它可能会在审查后需要一些微小的调整,但希望这个补丁最迟能在五月份发布。

0

评论者:tkjone

似乎有关于 google closure 的 PR 已经过审阅 https://github.com/google/closure-compiler/pull/2847

...