lein replが実行できないときに確認するファイル
昨日、Clojureで遊ぼうと思ってプロジェクトを作り、lein replしたところ
code: bash
clojure.lang.Compiler$CompilerException: Syntax error compiling var at (cider/nrepl/middleware/pprint.clj:74:3).
#:clojure.error{:phase :compile-syntax-check, :line 74, :column 3, :source "cider/nrepl/middleware/pprint.clj", :symbol var} at clojure.lang.Compiler.analyzeSeq (Compiler.java:7114)
clojure.lang.Compiler.analyze (Compiler.java:6789)
clojure.lang.Compiler.analyze (Compiler.java:6745)
clojure.lang.Compiler$InvokeExpr.parse (Compiler.java:3820)
clojure.lang.Compiler.analyzeSeq (Compiler.java:7108)
clojure.lang.Compiler.analyze (Compiler.java:6789)
clojure.lang.Compiler.analyze (Compiler.java:6745)
... 延々とエラーが続く
という症状に見舞われました。
lein test等他のLeiningenのコマンドは問題なく動きますが、REPLが立ち上がらないのではClojure開発の楽しみとパワーが半減してしまいます。
そこでcljコマンドを叩いてみると、普通にREPLが立ち上がりました。
どうやらLeiningenとClojureの橋渡しで失敗しているようです。
(ちなみに、Clojureのバージョンは1.10.0、Leiningenは2.9.1を使っています)
Clojureをやっていて困ったとき、どういう行動を取るのが正解でしょうか?
まずは、先の通り自分で調べられる所を調べておくというのは大事です。
それが住んだ後でやってみるのは「とりあえずどこかで叫んでみる」という方法です。
助けてもらえるかも知れないですし、助けてもらえないかも知れません。
でも、同じ問題にあたっている人が居る場合には賛同をもらえるかもしれないですし、まだ知られていないバグを踏み抜いた可能性だってあります。
なので、私はとりあえず自分調べに一区切りついたところで、Twitterで叫んでみました。
すると、速攻でレスポンスが。
どうやらLeiningenとClojureの橋渡しには、Clojure開発環境のデファクトスタンダードとも言えるCIDERプロジェクトから派生しているcider-nreplというパッケージを使用しているようで、いただいたレスでは「cider-nrepl に更新がかかっており、これが古いために生じているエラーではないか?」とのことでした。
CIDERを使っている場合は、多分CIDERの更新に引っ張られて更新されるのだと理解していますが、私が使っているのはVSCode + Calva。cider-nreplのバージョン指定なんてやったこともありません。
そんな話をつぶやくと、~/.lein/profiles.cljあたりとかという話をいただきました。
報酬が生じるわけでもない、顧客でも上司でも同僚でもない人の嘆きにもかかわらず、とても丁寧に回答をいただきました。
そんな訳で~/.lein/profiles.cljを開くとドンピシャ。
code: clojure
{:repl {:plugins cider/cider-nrepl "0.19.0"}}
と書かれているではありませんか!
ヤッター🎉