基座路由期间运行时异常

问题描述 投票:0回答:1

我在我的 Pedestal 网络应用程序中使用这样的路线:

(def routes
  [[["/" ^:interceptors [(body-params/body-params)
                         middlewares/params
                         params/keyword-params
                         coerce-body content-neg-intc
                         session-interceptor
                         ensure-db-interceptor
                         datomic-conn-db-interceptor]
     {:get `home-page}]
    ;; other routes

这个效果很好。但我有很多带有常见拦截器的路线,所以我试图像这样将它们分解出来:

(def default-interceptors
  [(body-params/body-params)
   middlewares/params
   params/keyword-params
   coerce-body
   content-neg-intc
   session-interceptor
   ensure-db-interceptor
   datomic-conn-db-interceptor])

(def routes
    [[["/" ^:interceptors default-interceptors
       {:get `home-page}]
       ;; other routes...

当我导航到这条路线时,出现异常:

clojure.lang.ExceptionInfo:拦截器中的 java.lang.AssertionError :io.pedestal.http.route/router - 断言失败:无法展开 '[#Interceptor{:name :io.pedestal.http.body-params/body -params} #function[io.pedestal.http.ring-middlewares/params] #Interceptor{:name :io.pedestal.http.params/keyword-params} {:name :service/coerce-body, :leave #function [service/fn--26867]} #Interceptor{:名称:io.pedestal.http.content-negotiation/negotiate-content} #Interceptor{:名称:io.pedestal.http.ring-middlewares/session} #Interceptor{ :name :service/ensure-db-interceptor} #Interceptor{:name :service/datomic-conn-db-interceptor}]' 作为路由。 需要动词映射或路径字符串,但找到了类 clojure.lang.PersistentVector

我不确定这里出了什么问题。做我想做的事情的正确方法是什么?

clojure pedestal
1个回答
0
投票

我需要拦截器向量 var 的类型提示

(def default-interceptors
  ^:interceptors [(body-params/body-params)
   middlewares/params
   params/keyword-params
   coerce-body
   content-neg-intc
   session-interceptor
   ensure-db-interceptor
   datomic-conn-db-interceptor])
© www.soinside.com 2019 - 2024. All rights reserved.