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

欢迎!请参阅 关于 页面,了解更多关于其工作方式的信息。

0 投票
ClojureScript
{code:|title=同时使用 `:npm-deps` 和 `:foreign-libs` 启动 REPL}
clj -Sdeps "{:deps {org.clojure/clojurescript {:mvn/version \"1.10.339\"}}}" -m cljs.main -co "{:npm-deps {left-pad \"1.3.0\"} :install-deps true :foreign-libs [{:file \"https://apis.google.com/js/platform.js\" :provides [\"google.api\"] :global-exports {google.api gapi}}]}" -r

{code:|title=在 `:npm-deps` 依赖之后 require `:foreign-libs` 库失败}
cljs.user=> (require '[left-pad])
cljs.user=> (require '[google.api])
java.io.FileNotFoundException: /home/garrett/https:/apis.google.com/js/platform.js (文件不存在或目录不存在)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
        at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
        at cljs.util$last_modified.invokeStatic(util.cljc:224)
        at cljs.util$last_modified.invoke(util.cljc:216)
        at cljs.util$changed_QMARK_.invokeStatic(util.cljc:232)
        at cljs.util$changed_QMARK_.invoke(util.cljc:231)
        at cljs.closure$handle_js_modules$fn__5877.invoke(closure.clj:2670)
        at clojure.core$some.invokeStatic(core.clj:2693)
        at clojure.core$some.invoke(core.clj:2684)
        at cljs.closure$handle_js_modules.invokeStatic(closure.clj:2667)
        at cljs.closure$handle_js_modules.invoke(closure.clj:2633)
        at cljs.repl$evaluate_form.invokeStatic(repl.cljc:508)
        at cljs.repl$evaluate_form.invoke(repl.cljc:484)
        at cljs.repl$eval_cljs.invokeStatic(repl.cljc:672)
        at cljs.repl$eval_cljs.invoke(repl.cljc:665)
        at cljs.repl$repl_STAR_$read_eval_print__6536.invoke(repl.cljc:957)
        at cljs.repl$repl_STAR_$fn__6542$fn__6551.invoke(repl.cljc:998)
        at cljs.repl$repl_STAR_$fn__6542.invoke(repl.cljc:997)
        at cljs.compiler$with_core_cljs.invokeStatic(compiler.cljc:1285)
        at cljs.compiler$with_core_cljs.invoke(compiler.cljc:1274)
        at cljs.repl$repl_STAR_.invokeStatic(repl.cljc:960)
        at cljs.repl$repl_STAR_.invoke(repl.cljc:839)
        at cljs.cli$repl_opt.invokeStatic(cli.clj:290)
        at cljs.cli$repl_opt.invoke(cli.clj:277)
        at cljs.cli$main.invokeStatic(cli.clj:612)
        at cljs.cli$main.doInvoke(cli.clj:601)
        在 clojure.lang.RestFn.applyTo(RestFn.java:139) 处调用
        在 clojure.core$apply.invokeStatic(core.clj:659) 处静态调用
        在 clojure.core$apply.invoke(core.clj:652) 处调用
        在 cljs.main$_main.invokeStatic(main.clj:61) 处调用
        在 cljs.main$_main.doInvoke(main.clj:52) 处调用
        在 clojure.lang.RestFn.applyTo(RestFn.java:137) 处调用
        在 clojure.lang.Var.applyTo(Var.java:702) 处调用
        在 clojure.core$apply.invokeStatic(core.clj:657) 处静态调用
        在 clojure.main$main_opt.invokeStatic(main.clj:317) 处调用
        在 clojure.main$main_opt.invoke(main.clj:313) 处调用
        在 clojure.main$main.invokeStatic(main.clj:424) 处调用
        在 clojure.main$main.doInvoke(main.clj:387) 处调用
        在 clojure.lang.RestFn.applyTo(RestFn.java:137) 处调用
        在 clojure.lang.Var.applyTo(Var.java:702) 处调用
        在 clojure.main.main(main.java:37) 处调用

{code:|title=在依赖 :npm-deps 之前使用 :foreign-libs 库时依赖顺序可能导致失败}
cljs.user=> (require '[google.api])
cljs.user=> (require '[left-pad])

2 个答案

0 投票
by

评论由:dnolen 提出

这里的问题可能不是顺序问题,而是对使用 URL 的 :file 条目的处理不当。

0 投票
by
参考:https://clojure.atlassian.net/browse/CLJS-2809(由 alex+import 提出)
...