为何无项目时可启动CIDER的Clojure REPL,却无法启动ClojureScript REPL?
问题原因解析
核心问题是无项目环境下缺少ClojureScript运行必需的配置和依赖基础,具体细节:
- shadow-cljs依赖项目专属配置:你在项目里能正常启动CLJS REPL,是因为项目根目录有
shadow-cljs.edn文件,里面定义了app构建目标、CLJS版本、编译规则等关键信息,CIDER靠这个识别CLJS环境并启动对应REPL。无项目时没有这个配置,CIDER找不到CLJS的运行依据。 - 无项目环境默认不加载CLJS依赖:ClojureScript本身是独立的依赖库,项目的
deps.edn或project.clj会声明它,而无项目启动的默认Clojure环境只带核心依赖,根本没引入CLJS,自然跑不了js/alert这类JS交互代码。 cider-jack-in-cljs的启动逻辑要求明确的CLJS构建配置:这个命令需要知道用什么构建工具(比如shadow-cljs)、用哪个构建目标,无项目时没有这些预设信息,CIDER没法正确初始化CLJS REPL,只能退回到基础的Clojure REPL模式,所以会报错说“ClojureScript is not available”。
至于cider-jack-in-clj能正常运行,是因为它只需要基础的Clojure运行环境,无项目时Emacs/CIDER会默认启动标准的Clojure REPL,不需要额外项目配置或依赖。
内容的提问来源于stack exchange,提问作者Pedro Delfino
相关产品推荐
相关产品推荐

