【问题标题】:Lein ring server 404Lein环服务器404
【发布时间】:2014-04-02 21:26:08
【问题描述】:

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

编辑 启动服务器后,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)))

【问题讨论】:

标签: clojure compojure ring


【解决方案1】:

上面应该有一个文件位于

web-viz/resources/public/data/census-race.json

【讨论】:

  • 我在资源和数据之间添加了公共文件,这很有效。但我得到一个页面说 Windows 无法打开这个文件 `census-race.json @albusshin
【解决方案2】:

您的项目正在为我工​​作。这是我构建项目的方式

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

【讨论】:

    【解决方案3】:

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

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

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

    您不需要任何额外的中间件,例如 wrap-filewrap-file-info,或wrap-content-type,因为compojure.route/resources 已经完成了您需要的一切。

    看看下面的方法是否有效:

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

    【讨论】:

    • 它似乎奏效了。除了我得到一个页面说 Windows 不能打开这个文件census-race.json@deadghost
    • @sunspots “无法打开”是什么意思?它可能是您的操作系统或浏览器。
    • 它试图在 Internet Explorer 中打开,首先要求我下载文件@deadghost
    • @sunspots 如果您可以下载该文件,它正在工作。如果您希望它在 IE 中看起来像上面那样,您可能需要设置您的环处理程序以将数据作为文本发送。或者,在 Firefox 中尝试一下。
    • 如何设置处理程序以将数据作为文本发送? @deadghost
    猜你喜欢
    • 2014-05-09
    • 2022-12-24
    • 2013-03-25
    • 2014-07-30
    • 2018-04-22
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多