[英]How to make cljs files works with figwheel repl via fireplace.vim?
我有一個關於 ClojureScript 的項目,我使用 vim 進行代碼編輯,所以我想訪問編輯器內的 repl,使用壁爐.vim 可以訪問什么。 如果您有一個全新的平面項目,它會很好地工作 - 您只需打開目錄,啟動 clojure repl,在同一目錄中打開 vim,創建一個表達式並使用 cpp 對其進行評估。
但是當我使用 figwheel 項目時,我想連接到 figwheel repl 以便從 cljs 文件中計算一些東西,所以我啟動了一個 figwheel 最終在端口 7888 上啟動了 repl 並使用 :Connect 命令連接到帶有壁爐的 repl 並且它工作僅適用於 clj 文件,不適用於 cljs。
當我嘗試評估 .cljs 文件中的表達式時,會拋出此錯誤:
處理函數 37_printop 1 ..37_opfunc[35]..fireplace#client 時檢測到錯誤:第 10 行:E605:未捕獲異常:壁爐:類 java.lang.ClassNotFoundException
有沒有人知道如何使它工作(壁爐 + .cjls 文件)?
您是否“捎帶”(“在 nREPL 會話之上啟用 ClojureScript REPL”)將 Fireplace 連接到 Figwheel REPL?
:Piggieback (figwheel-sidecar.repl-api/repl-env)
與ClassNotFound Exception cemmerick.piggieback
:
您必須在project.clj
或profiles.clj
包含cemerick.piggieback
。 見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]}}}
問題出在壁爐里。vim 插件
在firearm.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]
以下是我使用 vim 壁爐制作 figwheel 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"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.