语境
我正在使用 ClojureScript 和shadow-cljs构建一个 Node.js 库。
所有开发都是使用 ClojureScript 完成的,但构建工件是一个 NPM 包。例子:
(ns com.example.answer)
(defn answer [] 42)
构建...发布...然后
const answer = require('answer');
answer(); //=> 42
注意:我最近在这篇文章中提供了我的构建设置的详细信息。
我的整个开发环境都在一个 Docker 容器中,并且我正在使用“Visual Studio Code Remote - Container”扩展。
- ClojureScript v1.10
- 节点.js v12
- shadow-cljs v2.8.55
- Visual Studio Code Calva扩展(在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 Code卡尔瓦:
给定与上面相同的
shadow-cljs.edn
文件:当我尝试手动加载命名空间时
Calva: Load current namespace in REPL window
,我得到了同样的错误:没有应用程序连接到 REPL 服务器。确保您的 JS 环境已加载您编译的 ClojureScript 代码。
问题:我如何到达那个完美的世界?