如何在 Intellij 中调试 Clojure Web 应用程序?

dil*_*van 1 clojure intellij-idea ring cursive

我正在使用 Intellij + Cursive,我想调试使用 ring + compojure 编写的 Clojure Web 应用程序。我使用 lein 和 ring 插件在 Intellij 终端中启动应用程序:

> lein ring server-headless
Run Code Online (Sandbox Code Playgroud)

我想使用 Intellij 调试此应用程序以在源代码中设置断点、查看变量等。

但是 Intellij 的 Leiningen 选项卡没有显示带有 ring 命令的任务。运行配置也没有运行 ring 命令的选项。

dil*_*van 5

的IntelliJ具有远程调试运行配置可以使用Clojure使用

首先在project.clj文件中的jvm中添加以下选项:

:jvm-opts ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5010"]
Run Code Online (Sandbox Code Playgroud)

其中 5010 是要在 Intellij 远程调试配置中指定的端口号。

然后,在 Intellij 中,转到Run -> Run... -> Edit Configurations...Use the + 按钮并选择Remote.Give a name to the configuration,将端口更改为 5010 并单击 OK。使用 lein 运行应用程序:

> lein ring server-headless

应用程序运行后,运行(在 Intellij 中)您创建的 Intellij 远程调试配置。您将能够设置断点、逐行运行等。

没有莱宁根

另一种选择是删除 leiningen 并将 ring 应用程序作为 Cursive 中的 Clojure 应用程序运行。你必须添加一个-main函数:

(defn -main [] (run-jetty app {:port 8080})
Run Code Online (Sandbox Code Playgroud)

app是您定义路由并用作环处理程序的函数:ring {:handler xxx/app}project.clj.您必须将[ring.adapter.jetty :refer [run-jetty]]Intellij 中的文件要求和调试为 Clojure 应用程序。