试剂模板与Datomic依赖项在leiningen REPL中导致错误行为

3

我使用lein new reagent sample-proj创建了一个新的Reagent项目(您可以使用最新版本来重现问题)。过了一会儿,我添加了datomic的客户端依赖项(我不得不排除jetty-http,因为它与ring-server冲突)。

[com.datomic/clj-client "0.8.606"
  :exclusions [org.eclipse.jetty/jetty-http]
]

然后我意识到在 lein repl 中无法再使用 (start-server) 来运行服务器。在 localhost:3000 上只会得到一个 ERR_SOCKET_NOT_CONNECTED 错误,控制台中也没有任何消息。

更奇怪的是,如果我从 Cursive 中启动 nREPL,则一切正常。

有人知道这里发生了什么吗?我对此感到困惑,因为在 Cursive REPL 中找不到 figwhweel 的 app.js。我的 project.clj 如下: https://gist.github.com/frickm/4cfdba9ae812a909dfe8d5719c94718e

提前感谢您的帮助。
fricke


纯属运气发现了这个问题:当尝试连接到在boot-clj pod内启动的nREPL时,会收到一个套接字拒绝连接的错误,但手动执行boot repl并手动启动一切时却可以正常工作。 - Petrus Theron
1个回答

2
也许这是更深层次的依赖冲突?我可以按照您提到的步骤重现此问题。
您可以尝试使用其他排除项(如Maven repo中所示):
[com.datomic/clj-client "0.8.606" :exclusions
   [org.eclipse.jetty/jetty-http org.eclipse.jetty/jetty-util
    org.eclipse.jetty/jetty-client]]

我认为这是奇怪的,它居然能够工作。当你排除jetty-client依赖时,它甚至都没有被加载。但是如果不排除它,你会得到org.eclipse.jetty.util.thread.ExecutionStrategy$Producer的类加载错误。无论如何,非常感谢,尽管我现在正在使用对等库并稍后将进行交换。 - fricke
1
有人能解释一下像Datomic客户端库这样的库如何在没有警告的情况下隐式地覆盖套接字/nREPL的工作吗? - Petrus Theron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接