我想我在这里有一个相当简单的问题。但我一直在看这个屏幕太久了。所以我正在尝试(但失败)让有状态的会话在 Compojure 中工作。重新堆代码粘贴在这里。
您可以看到我尝试使用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)
谢谢