gpt4 book ai didi

clojure - 使用 ring/compojure 连接到 clojure nREPL 的问题

转载 作者:行者123 更新时间:2023-12-05 00:27:45 25 4
gpt4 key购买 nike

在 Java 1.7.0_21 Java HotSpot(TM) 64 位服务器 VM 上运行 Leiningen 2.3.4

我无法连接到 nREPL 服务器。

我使用 lein new luminus 设置了一个新项目,然后添加了对吊桥的依赖项 ( [com.cemerick/drawbridge "0.0.6"] )。

我为 repl 添加了一个处理程序路由,如下所示(基于 https://devcenter.heroku.com/articles/debugging-clojure ):

(def drawbridge-handler
(-> (cemerick.drawbridge/ring-handler)
(wrap-keyword-params)
(wrap-nested-params)
(wrap-params)
(wrap-session)))

(defn wrap-drawbridge [handler]
(fn [req]
(if (= "/repl" (:uri req))
(drawbridge-handler req)
(handler req))))

并添加 wrap-drawbridge到我的中间件。

然后我使用启动服务器
lein ring server-headless
连接似乎运行良好,因为在 http:localhost:3000/repl 上执行 GET 请求产生响应: ["[\n","\n]"]
但我无法连接到 REPL:
> lein repl :connect 0.0.0.0:3000/repl
Connecting to nREPL at 0.0.0.0:3000/repl

而且,一段时间后:
SocketException The transport's socket appears to have lost its connection to the nREPL server
clojure.tools.nrepl.transport/bencode/fn--4287/fn--4288 (transport.clj:95)
clojure.tools.nrepl.transport/bencode/fn--4287 (transport.clj:95)
clojure.tools.nrepl.transport/fn-transport/fn--4261 (transport.clj:42)
clojure.core/binding-conveyor-fn/fn--4107 (core.clj:1836)
java.util.concurrent.FutureTask$Sync.innerRun (FutureTask.java:334)
java.util.concurrent.FutureTask.run (FutureTask.java:166)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
java.lang.Thread.run (Thread.java:722)
Bye for now!

我错过了什么吗?

编辑:

向我的处理程序添加了以下日志记录代码:
(defn wrap-drawbridge [handler]
(fn [req]
(if (= "/repl" (:uri req))
(do (println "IN REPL ")
(drawbridge-handler req))
(handler req))))

连接时 lein repl :connect http://localhost:3000/repl按照建议,我看到了 IN REPL在服务器控制台上无限循环打印。

最佳答案

不是真正的直接答案,但我发现我没有以正确的方式解决这个问题。

Luminus 创建了一个 project-name.repl应该用于交互式开发的命名空间。

我发现我可以通过添加到我的 project.clj 来做我想做的事。

:repl-options {
:init-ns project-name.repl
:init (start-server)}

然后简单地用 lein repl 启动服务器.

比设置 nREPL 中间件简单得多!

关于clojure - 使用 ring/compojure 连接到 clojure nREPL 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20088908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com