ClojureScript配置piggieback环境后编译报错且网页无法连接Weasel REPL
问题修复方案
核心错误原因
你目前遇到的连接失败问题,本质是两个前置错误导致的:
- ClojureScript源码文件后缀错误:你src目录下的核心代码文件命名为
core.clj,.clj是Clojure服务端代码的标准后缀,ClojureScript编译器只会识别.cljs后缀的源码文件,找不到对应命名空间的源码,就是你执行build命令时报Could not write JavaScript nil错误的直接原因。 - 编译失败导致前端执行文件缺失:build命令执行报错后,
out/main.js没有正确生成,HTML引用的是空/不存在的JS文件,自然不会执行Weasel连接逻辑。
额外配置问题
你project.clj中的依赖配置存在不规范和兼容性问题:[org.clojure/tools.nrepl"0.2.10"] 缺少空格,且版本过低和你使用的cider/piggieback 0.5.2适配性不佳,可能引发后续REPL运行异常。
具体修复步骤
- 把src目录下的
core.clj重命名为core.cljs - 修正
project.clj中dev环境的依赖配置:
:profiles {:dev {:dependencies [[cider/piggieback "0.5.2"] [org.clojure/tools.nrepl "0.2.13"]] :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}}}
- 重启
lein repl,重新执行编译命令:
(require 'cljs.build.api) (cljs.build.api/build "src" {:main 'piggieback-project.core :output-to "out/main.js" :verbose true})
此时不会再抛出编译错误,out/main.js会正常生成。
4. 启动Weasel CLJS REPL:
(require 'weasel.repl.websocket) (cider.piggieback/cljs-repl (weasel.repl.websocket/repl-env :ip "0.0.0.0" :port 9001))
- 打开根目录下的HTML文件,REPL会立即输出客户端连接成功的提示,即可正常使用CLJS REPL。
内容的提问来源于stack exchange,提问作者Anders Kitson
相关产品推荐
相关产品推荐

