启动连接到 lein 项目模板的 cljs nREPL

Launch cljs nREPL connected to lein project template

我使用以下方法创建了一个 ClojureScript 项目:

lein new re-frame my-project

然后我使用 Cursive 在 IntelliJ 中打开它。在终端中键入 lein dev 后,它提示我消息:

shadow-cljs - HTTP server available at http://localhost:8280
shadow-cljs - server version: 2.8.52 running at http://localhost:9630
shadow-cljs - nREPL server started on port 8777
shadow-cljs - watching build :app
[:app] Configuring build.
[:app] Compiling ...
[:app] Build completed. (203 files, 1 compiled, 0 warnings, 3.65s)

我可以使用 link 打开服务器,它将我定向到一个 REPL,但不是连接到浏览器的 nREPL。按照他们的 documentation,我在另一个终端中输入 shadow-cljs clj-repl,这会打开一个 REPL,但不会打开一个连接到我的浏览器或项目的终端。如果我在 REPL 中输入 (js/alert "hi m8") 它会响应:

Syntax error compiling at (REPL:2:1).
No such namespace: js

我的问题是,我该如何使用它所说的已经启动的 nREPL,最好是如何在 IntelliJ 的集成 REPL 中访问它?

谢谢。

更新

它已经按照下面的方式工作了,但是如果有人知道如何让它在 Cursive / IntelliJ 中工作:

那就太好了。

我想通了。您必须在另一个终端中使用 shadow-cljs cljs-repl app

nREPL 连接将始终以 Clojure 模式启动。您可以通过 :cljs/quit.

(shadow.cljs.devtools.api/repl :app) 和 return 调用到 Clojure 模式,从而将其切换为使用 CLJS

但是,您应该连接到 "Clojure REPL" -> "Remote",然后使用端口 8777 连接到 "localhost"。这是通过 shadow-cljs.edn :nrepl {:port 8777}.

re-frame 模板中配置为默认值

您发布的屏幕截图看起来像是您连接到创建的随机端口 lein。这也可以工作,但需要对 nREPL middleware.

进行额外配置