2013-05-30 84 views
3

我已經使用lein創建了一個項目,然後在項目的根目錄中創建了一個公共目錄來放置靜態內容。從compojure和ring服務靜態文件

但是,靜態內容未按預期方式投放。

這裏是defroutes:

(defroutes greeter 
    (GET "/greeter/working" [] 
    (html 
     [:html 
     [:head [:tile "bla"]] 
     [:body [:image "oops.jpg"]] 
     ] 
    ) 
    ) 
    (GET "/greeter/sayhi" [] "say hi") 
    (GET "/greeter/" [] "top level") 
    (route/files "/" {:root (str (System/getProperty "user.dir") "\\public")}) 

(defn -main [] 
    (run-jetty greeter {:port 3000 :join? false})) 
+0

你說的是什麼意思你沒有找到404嗎?另外,你在Windows上? – noahlz

回答

7

確保你知道在哪裏 「user.dir來」 實際上是位於。這不是你的主目錄,它是你的應用程序的工作目錄,通常是你跑lein ring server的地方。

我創建了以下handler.clj文件的新項目的Compojure調試這並驗證在哪裏放置public/:「無法按預期送達」

(ns static-files.handler 
    (:use compojure.core) 
    (:require [compojure.handler :as handler] 
      [compojure.route :as route])) 

(def root (str (System/getProperty "user.dir") "/public")) 

(defroutes app-routes 
    (GET "/" [] "Hello World") 
    (route/files "/" (do (println root) {:root root})) 
    (route/resources "/") 
    (route/not-found "Not Found")) 

(def app 
    (handler/site app-routes))