我在ClojureScript上有一个项目,我正在使用vim进行代码编辑,因此我想在编辑器中访问repl,即可以使用firewall.vim进行访问。
如果您有一个全新的扁平项目,它会很好用-您只需打开目录,启动clojure repl,在同一目录中打开vim,创建一个表达式并使用cpp对其求值。
但是当我使用figwheel项目时,我想连接到figwheel repl以便从cljs文件中计算出一些东西,所以我启动了一个figwheel wich,最终在端口7888上启动了repl,并使用:Connect命令使用壁炉连接了该repl。并且仅适用于clj文件,不适用于cljs。
当我尝试在.cljs文件壁炉中求值时抛出此错误:
处理功能时检测到错误 37_printop 1 .. 37_opfunc [35] .. fireplace#client:第10行: E605:未捕获异常:壁炉:类 java.lang.ClassNotFoundException
有人知道如何使其工作(壁炉+ .cjls文件)吗?
答案 0 :(得分:1)
问题出在firewall.vim插件中
firefom.vim中的323行
let response = connection.eval("((or (resolve 'cider.piggieback/cljs-repl)"
必须是一行:
let response = connection.eval("((or (resolve 'cider.piggieback/wrap-cljs-repl)"
因为cider.piggieback在299行定义了wrap-cljs-repl函数:
(defn wrap-cljs-repl [handler]
答案 1 :(得分:0)
您是否已“ Piggiebacked”(“在nREPL会话的顶部启用ClojureScript REPL的使用”)将Fireplace连接到Figwheel REPL?
:Piggieback (figwheel-sidecar.repl-api/repl-env)
与ClassNotFound Exception cemmerick.piggieback
相关:
您必须在cemerick.piggieback
或project.clj
中包括profiles.clj
。参见https://github.com/nrepl/piggieback:
:profiles {:dev {:dependencies [[com.cemerick/piggieback "0.2.1"]
[figwheel-sidecar "0.5.18"]]
:repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}}}
答案 2 :(得分:0)
以下是我使用vim壁炉制作无花果轮REPL的步骤:
/home/{username}/.clojure/deps.edn
:...
:aliases {:nrepl
{:extra-deps
{nrepl/nrepl {:mvn/version "0.6.0"}
cider/cider-nrepl {:mvn/version "0.23.0"}
cider/piggieback {:mvn/version "0.4.2"}}}}
...
...
:deps {com.bhauman/figwheel-main {:mvn/version "0.2.3"}
figwheel-sidecar {:mvn/version "0.5.19"}}
...
clj -R:nrepl -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware cider.piggieback/wrap-cljs-repl]"
:Connect nrepl://localhost:{port}
:CljEval (do (require 'figwheel.main.api) (figwheel.main.api/start "dev"))
:CljEval (do (use 'figwheel.main.api) (figwheel.main.api/cljs-repl "dev"))