请分享您的想法,参与 2024 状态 Clojure 调查!

欢迎!请查看 关于 页面,了解更多信息。

+1
Clojure CLI

使用 Leiningen,我可以使用以下方式连接到 nrepl 服务器:

lein repl :connect

它会从 .nrepl-port 文件中获取端口,并带我进入 REPL 提示符。

使用 clojure,我假设我需要注入一些 nREPL 客户端依赖,并运行客户端这样的东西,所以不期望它能如此简洁,但仍然,我该怎么做呢?

2 个答案

+1

已选择
 
最佳答案

试试这个

clj -Sdeps '{:deps {nrepl/nrepl {:mvn/version "0.5.3"}}}' -m nrepl.cmdline -c --host 127.0.0.1 --port PORT

您可以从 .nrepl-port 或从 Leiningen 启动 nREPL 服务器时的输出中获取端口。

by
修改 by
谢谢。使用与我解答时相同的shell混合方式,我得到了类似于`lein repl :connect`的效果

    clj -Sdeps '{:deps {nrepl/nrepl {:mvn/version "1.0.0"}}}' -m nrepl.cmdline -c --host 127.0.0.1 --port `< .nrepl-port`

这个与reply以及lein(使用reply)之间的区别是,那些都会把我放入我项目的main命名空间中,而这是一个让我进入`user`命名空间的issue。这是一个小问题。我主要想了解一下reply是如何找出我项目的main命名空间的...
0
by

我最接近的是使用reply和shell/clojure的混合方式

clojure -Sdeps '{:deps {reply/reply {:mvn/version "0.5.1"}}}' -M -m reply.main --attach `< .nrepl-port` 
by
此外,基于@sanel的回答,并利用我项目已指定对`nrepl`的依赖

    clj -M -m nrepl.cmdline -c --port `< .nrepl-port`
...