Контекст
Я создаю библиотеку Node.js с ClojureScript и shadow-cljs .
Вся разработка выполняется с использованием ClojureScript, но артефакт сборки является пакетом NPM.Пример:
(ns com.example.answer)
(defn answer [] 42)
build ... release ... then
const answer = require('answer');
answer(); //=> 42
Примечание: я недавно предоставил подробную информацию о моей настройке сборки в этот пост .
Вся моя среда разработки находится в контейнере Docker, и я использую расширение "Visual Studio Code Remote - Container".
- ClojureScript v1.10
- Node.js v12
- shadow-cljs v2.8.55
- Код Visual Studio Кальва расширение(работает в удаленном контейнере VS Code )
«Проблема»
Мои настройки сборки работают нормально (по крайней мере, я так думаютак!) но я бы хотел реализовать более быстрый цикл обратной связи с разработчиками.
Другими словами: я не хочу перестраивать весь пакет NPM только для того, чтобы протестировать несколько строк изменений.
Идеальный мир он же «вопрос»
В идеальном мире я должен иметь возможность открыть REPL и оценить мой код ClojureScript по адресувсе время.
Независимо от того, как я пытаюсь туда попасть, мне кажется, что я заблокирован той же самой основной проблемой:
Ни одно приложение не подключено к серверу REPL.Убедитесь, что ваша среда JS загрузила скомпилированный код ClojureScript.
То, что я пробовал
Только с shadow-cljs
:
Имеется следующий shadow-cljs.edn
файл:
;; shadow-cljs configuration
{:source-paths
["src"]
:builds
{:lib {:target :node-library
:output-to "dist/index.js"
:exports {:citation citegen.processor.main/citation}}}}
Первые часы:
root@97db64e5dfa3:/workspaces/citegen# cd packages/csl-processor/
root@97db64e5dfa3:/workspaces/citegen/packages/csl-processor# yarn shadow-cljs cljs-repl lib
yarn run v1.17.3
$ /workspaces/citegen/node_modules/.bin/shadow-cljs cljs-repl lib
shadow-cljs - config: /workspaces/citegen/packages/csl-processor/shadow-cljs.edn cli version: 2.8.52 node: v12.10.0
shadow-cljs - socket connect failed, server process dead?
shadow-cljs - updating dependencies
...
shadow-cljs - dependencies updated
shadow-cljs - server version: 2.8.52 running at http://localhost:9630
shadow-cljs - nREPL server started on port 36017
[0:0]~cljs.user=>
Затем в другом терминале: (обратите внимание на сообщение об ошибке)
root@97db64e5dfa3:/workspaces/citegen# cd packages/csl-processor/
root@97db64e5dfa3:/workspaces/citegen/packages/csl-processor# yarn shadow-cljs cljs-repl lib
yarn run v1.17.3
$ /workspaces/citegen/node_modules/.bin/shadow-cljs cljs-repl lib
shadow-cljs - config: /workspaces/citegen/packages/csl-processor/shadow-cljs.edn cli version: 2.8.52 node: v12.10.0
shadow-cljs - connected to server
[1:1]~cljs.user=> (inc 41)
No application has connected to the REPL server. Make sure your JS environment has loaded your compiled ClojureScript code.
С кодом VS Кальва :
С учетом того же файла shadow-cljs.edn
, как указано выше:
Когда я пытаюсь вручную загрузить пространство имен с помощью Calva: Load current namespace in REPL window
, я получаю ту же ошибку:
Ни одно приложение не подключено к серверу REPL.Убедитесь, что ваша среда JS загрузила ваш скомпилированный код ClojureScript.
Вопрос: Как мне попасть в этот совершенный мир?