2010-10-08 4 views
4

У меня есть небольшой сайт compojure, с маршрутов определяется как таковую:Compojure Маршруты Выдает

(defroutes example 
    (GET "/" [] {:status 200 
       :headers {"Content-Type" "text/html"} 
       :body (home)}) 
    (GET "/*" (or (serve-file (params :*)) :next)) 
    (GET "/execute/" [] {:status 200 
         :headers {"Content-Type" "text/html"} 
         :body (execute-changes)}) 
    (GET "/status/" [] {:status 200 
        :headers {"Content-Type" "text/html"} 
        :body (status)}) 
    (route/not-found "Page not found")) 

При попытке загрузить проект, я получаю эту ошибку:
java.lang.Exception: Unsupported binding form: (or (serve-file (params :*)) :next)

Что я делать не так? Я взял большую часть этого из разрозненных примеров в Интернете.

После добавления пустого вектора, я получаю эту ошибку:
java.lang.Exception: Unable to resolve symbol: serve-file in this context

ответ

6

Я думаю, вы пропустили обязательную форму:

(GET "/*" {params :params} (or (serve-file (params :*)) :next)) 
     ; ^- note the binding form 
+2

В недавнем Compojure я думаю, что это должно быть '{Титулы: params} 'вместо пустого вектора, потому что Compojure больше не настраивает волшебный' params' для вас. –

+0

@Brian Carper: О, это верно. Исправлена. Благодаря! –