Как отладить веб-приложение Clojure в Intellij? - PullRequest
1 голос
/ 25 мая 2019

Я использую Intellij + Cursive и хочу отладить веб-приложение Clojure, написанное с использованием ring + compojure.Я запускаю приложение в терминале Intellij, используя lein и плагин ring:

> lein ring server-headless

Я хочу отладить это приложение, используя Intellij для установки точек останова в исходном коде, см. Переменные и т. Д.

Но на вкладке Лейнингена в Intellij не отображается задача с командой ring.Конфигурации запуска также не имеют возможности выполнить команду ring.

Ответы [ 2 ]

2 голосов
/ 26 мая 2019

Вам необходимо выполнить два шага:

  1. Обновите project.clj, чтобы передать дополнительные параметры, например
  :ring {:nrepl {:start? true :port 4001}      ;; <== Add this
         :handler com.mycompany.web/myhandler} ;; you should have this 

... это должно запустить веб-приложениев порте 4000, а также порт nREPL для отладки и т. д. в порте 4001. Для получения более подробной информации см. документацию lein-ring .

При запуске приложения вы должны увидеть следующее.:

$ lein ring server-headless 4000
[... some output omitted ...]
Started nREPL server on port 4001
Started server on port 4000
В Cursive подключитесь к серверу nREPL, как описано в разделе Удаленные REPL в Документах Cursive .Вы должны использовать localhost или 0.0.0.0 в качестве имени хоста и 4001 (или любой другой порт nREPL, который вы использовали в конфигурации на предыдущем шаге).
1 голос
/ 08 июня 2019

Intellij имеет конфигурацию запуска удаленной отладки , которую можно использовать с Clojure .

Сначала добавьте следующие параметры в jvm в файле project.clj:

:jvm-opts ["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5010"]

Где 5010 - номер порта, который должен быть указан в Конфигурации удаленной отладки Intellij.

Затем в Intellij перейдите к Run -> Run... -> Edit Configurations... Используйте кнопку + и выберите Remote. Датьвведите имя конфигурации, измените порт на 5010 и нажмите OK.Запустите приложение, используя lein:

> lein ring server-headless

После запуска приложения запустите (в Intellij) созданную вами конфигурацию удаленной отладки Intellij.Вы сможете устанавливать точки останова, запускать построчно и т. Д.

Без Leiningen

Другой вариант - сбросить leiningen и запустить кольцевое приложение как приложение Clojure.в скорописи.Вы должны добавить функцию -main:

(defn -main [] (run-jetty app {:port 8080})

app - это функция, в которой вы определяете свои маршруты и используете в качестве обработчика кольца :ring {:handler xxx/app} в project.clj.. Требуется [ring.adapter.jetty :refer [run-jetty]] иотладить файл в Intellij как приложение Clojure.

...