Lein环服务器404

时间:2014-04-02 21:26:08

标签: clojure compojure ring

我正在建立一个使用Ring和Compojure构建路由和处理程序的Web应用程序。我每次尝试lein ring server时都会得到404 Not Found。但我应该看到

enter image description here

修改 启动服务器后,IE要求我打开或保存文件。但是Windows无法读取JSON文件。

我的project.clj看起来像

(defproject web-viz 
 :dependencies [[org.clojure/clojure "1.4.0"]
                [ring/ring-core "1.1.7"]
                [ring/ring-jetty-adapter "1.1.7"]
                [compojure "1.1.3"]
                [hiccup "1.0.2"]]
:plugins [[lein-ring "0.8.3"]]
:ring {:handler web-viz.web/app})

在src里面我有一个文件web.clj

(ns web-viz.web
(:require [compojure.route :as route]
      [compojure.handler :as handler]
      [clojure.string :as str])
(:use compojure.core
  ring.adapter.jetty
  [ring.middleware.content-type :only
  (wrap-content-type)]
  [ring.middleware.file :only (wrap-file)]
  [ring.middleware.file-info :only
  (wrap-file-info)]
  [ring.middleware.stacktrace :only
  (wrap-stacktrace)]
  [ring.util.response :only (redirect)]))

(defroutes site-routes
(GET "/" [] (redirect "/data/census-race.json"))
(route/resources "/")
(route/not-found "Page not found"))

(def app (-> (handler/site site-routes)
         (wrap-file "resources")
         (wrap-file-info)
         (wrap-content-type)))

3 个答案:

答案 0 :(得分:2)

应该有一个上面的内容位于

的文件
web-viz/resources/public/data/census-race.json

答案 1 :(得分:2)

你的项目对我有用。以下是我构建项目的方式

.
├── project.clj
├── resources
│   └── data
│       └── census-race.json
└── src
    └── web_viz
        └── web.clj

答案 2 :(得分:1)

我没有看到任何明显错误,但以下情况看起来很不寻常:

(def app (-> (handler/site site-routes)
         (wrap-file "resources")
         (wrap-file-info)
         (wrap-content-type)))

来自https://stackoverflow.com/a/22788463/894091

  

您不需要任何额外的中间件,例如wrap-file,   自wrap-file-info以来wrap-content-typecompojure.route/resources   已经做了你需要的一切。

看看以下是否有诀窍:

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