2010-10-08 3 views
4

J'ai un petit site compojure, avec les itinéraires définis comme tels:Compojure Routes Les questions en litige

(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")) 

Lorsque je tente de charger le projet, je reçois cette erreur:
java.lang.Exception: Unsupported binding form: (or (serve-file (params :*)) :next)

Que suis-je mal faire? J'ai pris la plupart de ceci à partir d'exemples dispersés sur Internet.

Après avoir ajouté le vecteur vide, je reçois cette erreur:
java.lang.Exception: Unable to resolve symbol: serve-file in this context

Répondre

6

Je pense que vous manquez une forme de liaison:

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

Dans Compojure récente, je pense qu'il devrait être '{params: params} 'au lieu d'un vecteur vide, car Compojure ne configure plus la magie locale' params' pour vous. –

+0

@Brian Carper: Oh, c'est vrai. Fixé. Merci! –