プロジェクトに ClojureScript を使用しようとしています。幸せな開発者になるためには、迅速なフィードバック ループが必要です。コードを書いて、できるだけ早く確認してください。また、現在のページのコンテキストで REPL を使用したいと考えています。
私が使用lein-cljsbuild
している問題から、適切にセットアップできなかったと思います。
まず第一に、「JWM ウォームアップ」後でも、小さなファイルのコンパイル時間は長すぎます:optimizations :simple
:
Compiling "resources/public/js/cljs.js" from ["src-cljs"]...
Successfully compiled "resources/public/js/cljs.js" in 8.233018 seconds.
Compiling "resources/public/js/cljs.js" from ["src-cljs"]...
Successfully compiled "resources/public/js/cljs.js" in 5.522989 seconds.
Compiling "resources/public/js/cljs.js" from ["src-cljs"]...
Successfully compiled "resources/public/js/cljs.js" in 8.144354 seconds.
第二に、時々私はこのようなものを手に入れます:
Compiling "resources/public/js/cljs.js" from ["src-cljs"]...
Compiling "resources/public/js/cljs.js" failed.
Exception in thread "main" java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Matcher.java:1140)
at java.util.regex.Matcher.reset(Matcher.java:291)
at java.util.regex.Matcher.<init>(Matcher.java:211)
at java.util.regex.Pattern.matcher(Pattern.java:888)
at clj_stacktrace.utils$re_gsub.invoke(utils.clj:6)
# ... many similar useless lines
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)
これらのスタック トレース (実験から理解したように、ほとんどの場合、構文エラーに関連しています) は役に立たないよりも悪いです: エラーに関する手がかりを提供しないだけでなく、自動再コンパイルも停止します。そのようなスタックトレースごとに、次のことを行う必要があります。
- 私が「パーサーのふりをする」と呼んでいるテクニックを使用して、何が問題なのかを突き止めてください。これが Lisp であることを神に感謝します。私がすべき唯一のことは、対応する括弧を注意深く数えることです。
- が実行
Cmd-C
されるシェルを押し込みますlein cljsbuild auto
lein cljsbuild auto
再実行- ファイルに改行を挿入するなどの無駄な変更を加えて、新しいビルドをトリガーします
- JVM は再度「ウォームアップ」する必要があるため、ファイルが再度コンパイルされるまで 30 秒ほど待ちます。
- 多くの場合、この時点で別のスタックトレースを取得します。それを取得した後、泡立て、すすぎ、すべての忌まわしい手順を繰り返す必要があります
私が理解できなかった3番目のことはREPLです。rlwrap lein trampoline cljsbuild repl-listen
インターウェブから、現在のページに接続する方法を学びました。ただし、コンソールのすべてのリロード、ナビゲーション、および構文エラー (矢印キーを使用して押すのを忘れてはいけませんrlwrap
) により、REPL が完全に動かなくなります。私はそれを再起動し(〜10秒)、その後ページをリロードしてから、フレンドリーな環境でもう一度試してみる必要があります.
おそらく誰かがそれをすべて理解し、機能するワークフローを持っていると思います。私は失敗したソフトウェアエンジニアのように感じているので、最初からすべてをセットアップするのを手伝ってください.