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

欢迎!请参阅 关于 页面以了解更多关于其工作原理的信息。

0 投票
ClojureScript
当编译以下脚本时(简单的例子)


(require 'cljs.build.api)

(cljs.build.api/build "src")
  {:main 'hello.core
   :output-to "main.js"
   :output-dir "/home/carlos/Playground/node-abs/out"
   :target :nodejs})


它生成了尝试解析以下路径的代码


/home/carlos/Playground/node-abs/home/carlos/Playground/node-abs/out/goog/bootstrap/nodejs.js


在 Node.js {{:none}} shim 中解析之前,我们应该检查为 {{:output-dir}} 提供的路径是否为绝对路径。该 shim 在 CLJS-1444 中有一个相关的票据。

尽管用户拥有绝对路径的情况不常见,但工具可能需要。

6 个答案

0 投票

评论由:bensu 提出

附加的补丁 {{cljs_1466.patch}} 使用 {{path.resolve}} 解决了该问题,它考虑了在连接路径时的相对路径与绝对路径。在与相对和绝对 {{:output-dir}} 的示例 repo 中成功测试。

0 投票

评论由:martinklepsch 提出

查看补丁,它在某些情况下可能会破坏当前的行怍?你考虑过这个问题吗?

CLJS-1444(链接:1)可能也会以某种方式损坏shim,因此最好同时处理这些,并清楚地说明将会损坏什么等。只要我们提出一个扎实且可预测的实现,我认为打断这个是值得一试的。

(链接:1) http://dev.clojure.org/jira/browse/CLJS-1444 有关

0 投票

评论者:dnolen

在进一步推进这项之前,希望得到已经在ClojureScript + Node.js上有深厚投资的人的反馈。

0 投票

评论由:bensu 提出

(链接:~martinklepsch):我确实考虑了破坏性,但我没有发现任何案例。你有示例吗?在(链接:https://github.com/bensu/node-abs-ticket,示例仓库)中,我已经建立了一些测试(通过运行{{./script/test.sh}}),但这归结为{{path.join(path.resolve("."),paths)}}对所有相对路径与{{path.resolve(paths)}}等价,因为“解析为绝对路径”方法对两者都相同({{process.cwd()}}在{{path.resolve}}内部)。在考虑绝对路径时,只有新版本正确处理。

另一方面,这些测试也揭示出,我最初认为的补丁并未涵盖CLJS-1446,因为

node main.js

成功,而

cd .. node node-abs/main.js

失败。

0 投票

评论者:mfikes

补丁不再适用。

0 投票
...