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

欢迎!请查看关于页面了解有关此功能的更多信息。

0
ClojureScript
我在 1.10.x 版本中发现了 npm-deps 解决方案的回归问题。对于子依赖项,它无法正确解决模块路径。当我需要 eg. {{@material/snackbar}} 时,它会因 {{未捕获错误:未定义的模块 nameToPath 为 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 添加的评论

在 #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 添加的评论

抱歉我之前没有回应,因为我昨天参加了编码 retreat。这是一个 DOM 组件,所以非平凡的示例需要在修改后的浏览器 REPL 中运行 {{index.html}}。我认为,如果发出的 {{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

...