簡體   English   中英

嘗試從 Transit 庫調用 Clojure 函數的 Clojurescript repl

[英]Clojurescript repl trying to invoke Clojure function from the Transit library

我有cognitect.transit-cljcognitect.transit-cljs依賴項,因為我的項目是后端的 Clojure 和前端的 CLJS。 我正在使用cider-connect到蘋果酒中的 shadow-cljs repl。

在 repl 中,我這樣做:

(require '[cognitect.transit :as xit])
(def my-writer (xit/writer :json))

我收到此錯誤:

Execution error (ArityException) at nrepl.middleware.interruptible-eval/evaluate$fn (interruptible_eval.clj:91).
Wrong number of args (1) passed to: cognitect.transit/writer

似乎它正在嘗試調用transmit/writer編寫器的 Java 版本。 我的依賴項或設置有問題嗎?

這是完整的堆棧跟蹤:

clojure.lang.Compiler$CompilerException: Syntax error macroexpanding at (NO_SOURCE_FILE:45:29).
#:clojure.error{:phase :execution, :line 45, :column 29, :source "NO_SOURCE_FILE"}
 at clojure.lang.Compiler$InvokeExpr.eval (Compiler.java:3707)
    clojure.lang.Compiler$DefExpr.eval (Compiler.java:457)
    clojure.lang.Compiler.eval (Compiler.java:7182)
    clojure.lang.Compiler.eval (Compiler.java:7132)
    clojure.core$eval.invokeStatic (core.clj:3214)
    clojure.core$eval.invoke (core.clj:3210)
    nrepl.middleware.interruptible_eval$evaluate$fn__42793.invoke (interruptible_eval.clj:91)
    clojure.main$repl$read_eval_print__9086$fn__9089.invoke (main.clj:437)
    clojure.main$repl$read_eval_print__9086.invoke (main.clj:437)
    clojure.main$repl$fn__9095.invoke (main.clj:458)
    clojure.main$repl.invokeStatic (main.clj:458)
    clojure.main$repl.doInvoke (main.clj:368)
    clojure.lang.RestFn.invoke (RestFn.java:1523)
    nrepl.middleware.interruptible_eval$evaluate.invokeStatic (interruptible_eval.clj:84)
    nrepl.middleware.interruptible_eval$evaluate.invoke (interruptible_eval.clj:56)
    nrepl.middleware.interruptible_eval$interruptible_eval$fn__42819$fn__42823.invoke (interruptible_eval.clj:155)
    clojure.lang.AFn.run (AFn.java:22)
    nrepl.middleware.session$session_exec$main_loop__43068$fn__43072.invoke (session.clj:190)
    nrepl.middleware.session$session_exec$main_loop__43068.invoke (session.clj:189)
    clojure.lang.AFn.run (AFn.java:22)
    java.lang.Thread.run (Thread.java:748)
Caused by: clojure.lang.ArityException: Wrong number of args (1) passed to: cognitect.transit/writer
 at clojure.lang.AFn.throwArity (AFn.java:429)
    clojure.lang.AFn.invoke (AFn.java:32)
    clojure.lang.AFn.applyToHelper (AFn.java:154)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.lang.Compiler$InvokeExpr.eval (Compiler.java:3702)
    clojure.lang.Compiler$DefExpr.eval (Compiler.java:457)
    clojure.lang.Compiler.eval (Compiler.java:7182)
    clojure.lang.Compiler.eval (Compiler.java:7132)
    clojure.core$eval.invokeStatic (core.clj:3214)
    clojure.core$eval.invoke (core.clj:3210)
    nrepl.middleware.interruptible_eval$evaluate$fn__42793.invoke (interruptible_eval.clj:91)
    clojure.main$repl$read_eval_print__9086$fn__9089.invoke (main.clj:437)
    clojure.main$repl$read_eval_print__9086.invoke (main.clj:437)
    clojure.main$repl$fn__9095.invoke (main.clj:458)
    clojure.main$repl.invokeStatic (main.clj:458)
    clojure.main$repl.doInvoke (main.clj:368)
    clojure.lang.RestFn.invoke (RestFn.java:1523)
    nrepl.middleware.interruptible_eval$evaluate.invokeStatic (interruptible_eval.clj:84)
    nrepl.middleware.interruptible_eval$evaluate.invoke (interruptible_eval.clj:56)
    nrepl.middleware.interruptible_eval$interruptible_eval$fn__42819$fn__42823.invoke (interruptible_eval.clj:155)
    clojure.lang.AFn.run (AFn.java:22)
    nrepl.middleware.session$session_exec$main_loop__43068$fn__43072.invoke (session.clj:190)
    nrepl.middleware.session$session_exec$main_loop__43068.invoke (session.clj:189)
    clojure.lang.AFn.run (AFn.java:22)
    java.lang.Thread.run (Thread.java:748)

我對cider-connect知之甚少,但很可能您只是連接到 CLJ REPL 而不是您正在尋找的實際 CLJS REPL。 連接始終以 CLJ 開頭,您的編輯器必須將其“升級”為 CLJS。 也許仍然是最新的?

對於普通的 shadow-cljs,您可以通過shadow-cljs cljs-repl app直接訪問 CLJS REPL(假設:app是您的構建 ID)。 對於 nREPL,您的編輯器處於控制之中。 我確定有一個命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM