ここにはかなり単純な問題があると思います。しかし、私はこの画面をあまりにも長く見ていました。そのため、Compojure でステートフル セッションを動作させようとしています (そして失敗しています)。refheap コードの貼り付けは hereです。
lib-noir (62 行目) を使用してステートフル セッションを初期化しようとしているのがわかります。次に、アプリが実行されているときに、 session/put!の呼び出しを試みます。セッション内のいくつかのデータ (43 行目)。
現在、このスタックトレースは、session.put! で、lib-noir がバインドされていないセッション変数を交換しようとしていることを示しています。今、私は 62 行目でそれを行ったと思っていました。だから、これは別の目に見える単純な修正であると確信しています。
java.lang.ClassCastException: clojure.lang.Var$Unbound cannot be cast to clojure.lang.Atom
at clojure.core$swap_BANG_.invoke(core.clj:2110)
at noir.session$put_BANG_.invoke(session.clj:18)
at bkell.http.handler$fn__6159.invoke(handler.clj:156)
at compojure.core$make_route$fn__3800.invoke(core.clj:93)
at compojure.core$if_route$fn__3784.invoke(core.clj:39)
at compojure.core$if_method$fn__3777.invoke(core.clj:24)
at compojure.core$routing$fn__3806.invoke(core.clj:106)
at clojure.core$some.invoke(core.clj:2390)
at compojure.core$routing.doInvoke(core.clj:106)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
...
at java.lang.Thread.run(Thread.java:619)
ありがとう