Clojurescript repl试图从传输库调用Clojure函数

Clojurescript repl试图从传输库调用Clojure函数,clojure,clojurescript,shadow-cljs,Clojure,Clojurescript,Shadow Cljs,我有cognitect.transit clj和cognitect.transit cljs依赖项,因为我的项目在后端是Clojure,在前端是cljs。我正在用苹果酒连接连接到苹果酒中的影子cljs repl 在repl中,我确实: (require '[cognitect.transit :as xit]) (def my-writer (xit/writer :json)) 我得到这个错误: Execution error (ArityException) at nrepl.middle

我有
cognitect.transit clj
cognitect.transit cljs
依赖项,因为我的项目在后端是Clojure,在前端是cljs。我正在用苹果酒连接连接到苹果酒中的影子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
它似乎试图调用java版本的
transmit/writer
。我的依赖项或设置是否有问题

以下是完整的堆栈跟踪:

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)

我对苹果汁连接知之甚少,但很可能您只是连接到了CLJ REPL,而不是您正在寻找的实际CLJS REPL。连接总是以CLJ开始,编辑器必须将其“升级”到CLJS。也许现在还流行


对于普通shadow cljs,您可以通过
shadow cljs cljs REPL app
(假设
:app
是您的构建id)直接访问cljs REPL。对于nREPL,由编辑器控制。我相信这是有命令的。

谢谢,你让我参与了这件事。。。原来原因是我在连接到repl后没有运行这个
(shadow/repl:main)
。仅供参考,
cider connect
请求主机和端口,所以要将repl连接到shadow cljs,我输入'locahost'和
$npx shadow cljs服务器的nrepl端口输出。我想我已经从fulcro文档或者在我设置项目时从各个地方获得了连接到shadow cljs repl的所有步骤。