4

lein を使用してプロジェクトを作成し、プロジェクトのルート内にパブリック ディレクトリを作成して静的コンテンツを配置しました。

ただし、静的コンテンツは期待どおりに提供されません。

デルートは次のとおりです。

(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}))
4

2 に答える 2

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))
于 2013-05-30T14:03:44.860 に答える