语境
我正在使用 ClojureScript 和shadow-cljs构建一个 Node.js 库。
所有开发都是使用 ClojureScript 完成的,但构建工件是一个 NPM 包。例子:
(ns com.example.answer)
(defn answer [] 42)
Run Code Online (Sandbox Code Playgroud)
构建...发布...然后
const answer = require('answer');
answer(); //=> 42
Run Code Online (Sandbox Code Playgroud)
注意:我最近在这篇文章中贡献了我的构建设置的详细信息。
我的整个开发环境都在一个 Docker 容器中,我使用的是“Visual Studio Code Remote - Container”扩展。
问题”
我的构建设置工作正常(至少我认为是这样!)但我想实现更快的开发反馈周期。
换句话说:我不想为了测试几行更改而重建整个 NPM 包。
完美世界 又名“问题”
在一个完美的世界中,我应该能够打开 REPL 并能够始终评估我的 ClojureScript 代码。
无论我如何尝试到达那里,我似乎都被相同的潜在问题所阻止:
没有应用程序连接到 REPL 服务器。确保您的 JS 环境已加载您编译的 ClojureScript 代码。
我试过的
与shadow-cljs只:
鉴于以下shadow-cljs.edn文件: …
我使用 VS Code Calva扩展编写 Clojure ,它使用clj-kondo对我的代码执行静态分析。
我正在使用HugSQL从 SQL 查询和语句创建 Clojure 函数。
我知道我可以使用像conman这样的库来处理数据库连接和 HugSQL 集成,事实上我过去使用过它并且我喜欢它,但这次我想保持原样并自己与 HugSQL 交谈。
HugSQL 的def-db-fns宏接受一个 SQL 文件,并根据该文件中包含的 SQL 查询和语句创建 Clojure 函数。
我下面的代码有效,但 clj-kondo 抱怨这seed-mytable!是一个未解析的符号。
(ns my-app.db
"This namespace represents the bridge between the database world and the clojure world."
(:require [environ.core :refer [env]]
[hugsql.core :as hugsql]
[nano-id.core :refer [nano-id]]))
;; This create the function seed-mytable!, but clj-kondo doesn't (cannot?) know it.
(hugsql/def-db-fns "sql/mytable.sql")
;; The functions …Run Code Online (Sandbox Code Playgroud)