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

欢迎!请参阅关于页面以获取更多关于此信息。

0
ClojureScript
我在1.10.x版本的npm-deps解析上有回归问题。对于子依赖,它不能正确解析模块路径。当我需要例如{{@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_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 组件,所以非平凡的示例需要在修改后的 {{index.html}} 中运行的浏览器 REPL 中运行。我认为,如果发出的 {{goog.require}} 是正确的,其他所有事情都将工作得很好。非常感谢这个修复。我希望你的GCC PR能够很快被接受。{{1.10}} 看起来非常稳定且速度很快。

0

评论者:dnolen

Closure Compiler PR 现在有一个测试用例。它可能需要一些小小的调整,通过审查后,但是希望这个补丁能够最新地进入五月份的发布。

0

评论人:tkjone

似乎google closure的PR已被审查 https://github.com/google/closure-compiler/pull/2847

...