Я создал проект ClojureScript, используя:

lein new re-frame my-project

Затем я открыл его в IntelliJ с помощью Cursive. В терминале после ввода 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)

Я могу открыть сервер по ссылке, которая направляет меня к REPL, но не по nREPL, подключенному к браузеру. Следуя их документации, я набираю shadow-cljs clj-repl для другой терминал, который открывает REPL, но не тот, который связан с моим браузером или проектом. Если я наберу (js/alert "hi m8") в REPL, он ответит:

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

Мой вопрос: как мне использовать nREPL, который, как он говорит, запущен, и предпочтительно, как мне получить к нему доступ во встроенном REPL в IntelliJ?

Спасибо.

Обновить

Сделайте так, как показано ниже, но если кто-нибудь знает, как заставить его работать здесь, в Cursive / IntelliJ:

enter image description here

Это было бы супер.

0
Mr. Robot 1 Сен 2019 в 16:43

2 ответа

Лучший ответ

Соединение nREPL всегда будет запускаться в режиме Clojure. Вы можете переключить его на использование CLJS, вызвав (shadow.cljs.devtools.api/repl :app) и вернуться в режим Clojure через :cljs/quit.

Однако вы должны подключиться к «Clojure REPL» -> «Remote», а затем к «localhost» с портом 8777. Это настроено по умолчанию в шаблоне re-frame через shadow-cljs.edn :nrepl {:port 8777}.

Снимок экрана, который вы разместили, выглядит так, как будто вы подключены к созданному случайному порту lein. Это также будет работать, но требует дополнительной настройки для промежуточного программного обеспечения nREPL.

1
Thomas Heller 3 Сен 2019 в 16:02

Я понял это. Вы должны использовать shadow-cljs cljs-repl app в другом терминале.

0
Mr. Robot 1 Сен 2019 в 13:50