- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习网络版 Clojure。我正在尝试在 Lein 应用程序中实现 Bidi 和 Ring。当我打开该网站时,出现 500 错误:
HTTP ERROR: 500
Problem accessing /. Reason:
Response map is nil
Powered by Jetty://
我的文件如下:
./project.clj
(defproject bidi-ring "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
:url "https://www.eclipse.org/legal/epl-2.0/"}
:dependencies [[org.clojure/clojure "1.10.0"]
[bidi "2.1.6"]
[ring/ring-core "1.6.3"]
[ring/ring-jetty-adapter "1.6.3"]]
:repl-options {:init-ns my.app}
:main my.app)
./src/my/handler.clj
(ns my.handler (:gen-class)
(:require [bidi.ring :refer (make-handler)]
[ring.util.response :as res]))
(defn index-handler
[request]
(res/response "Homepage"))
(defn article-handler
[{:keys [route-params]}]
(res/response (str "You are viewing article: " (:id route-params))))
(def handler
(make-handler ["/" {"index.html" index-handler
["articles/" :id "/article.html"] article-handler}]))
./src/my/app.clj
(ns my.app (:gen-class)
(:require [my.handler :refer [handler]]
[ring.middleware.session :refer [wrap-session]]
[ring.middleware.flash :refer [wrap-flash]]))
(use 'ring.adapter.jetty)
(defn -main []
(def app
(-> handler
wrap-session
wrap-flash))
(run-jetty app {:port 3000}))
如何解决?
最佳答案
您的路线有误。看看这个 Bidi 演示存储库:
https://github.com/io-tupelo-demo/bidi
tst.demo.core 第 16 行的代码显示了正在发生的情况。在 bidi
中,路由“/index.html”不包含退化路由“/”:
(let [routes ["/" ; common prefix
{"index.html" :index
"article.html" :article}]
routes-2 ["/" ; common prefix
{"" :index ; add a default route so "/" and "/index.html" both => `:index` handler
"index.html" :index
"article.html" :article}]]
(is= (bidi/match-route routes "/index.html") {:handler :index}) ; normal case
(is= (bidi/match-route routes "/") nil) ; plain "/" route is not available, has no default
(is= (bidi/match-route routes-2 "/") {:handler :index})) ; Now we get the :index route
当没有路由匹配时,match-route
返回一个 nil
,然后服务器将其转换为发送的 500 not-found
到浏览器。
关于web - Bidi、Ring 和 Lein 的简单 Web 应用程序给出 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234899/
现在,当我运行 lein 时,它倾向于: (1) 杀死 lib/* 然后 (2) 重新安装/下载各种库到lib/ 现在,这是一个问题,因为我倾向于将我需要的 *.jars 复制到 lib/中,但随后
我跑了lein uberjar在我的项目上,它创建了相应的 jar 文件。当我运行 jar ClassNotFoundException: explodingdots.core被抛出。我指定了 exp
lein figwheel 和 lein cljsbuild auto 有什么区别,因为我相信它们都是用来编译 clojurescript 的。 使用一个比另一个有什么好处吗? 最佳答案 格威尔 它们
在我看来,lein run 和 lein Tampoline 之间的唯一区别是后者退出 Leiningen 的 JVM 以节省内存。 这似乎总是一个好主意,那么为什么这个功能不包含在lein run中
我正在尝试实现我正在使用的遗留运行时所需的 Java 接口(interface),并实例化此实现的实例以将其传递给运行时。但是当我运行 lein uberjar我看到一个异常,找不到该类。两个命名空间
我想从我的 lein repl 控制一些 lein-plugins(lein-cljs build、lein-aws、lein-beanstalk)。有没有办法做到这一点? 例如,我希望能够调用 插件
我正在制作一个部署在 Heroku 上的 Clojure/ClojureScript 网站。我正在使用 Leiningen 进行项目管理。 我想用 LESS 编写我的样式表。我需要构建过程将 LESS
新手 Clojure 和 leiningen 问题: 鉴于我下面项目中的代码片段,这适用于 lein repl : ==> (-main "something") 产生预期的“命令:某事......正
当前的问题是,当我使用 lein run 运行程序时,它会到达 (read-line) 部分,而我无法摆脱它,意思是:读取行永远不会返回。 相关代码如下: (def command (atom "")
在基于解放者的clojure项目中,我们使用datomic作为DB。将本地开发数据库迁移到S3托管的数据库并在项目上添加所需的依赖关系之后,我们无法启动REPL,但Liberator堆栈通过lein
假设我找到了一个很酷的 clojure 库,例如 https://github.com/clojurewerkz/buffy 现在我想使用它。而且它只存在于 github 上。 我该怎么做?我希望有一
我刚刚开始使用 lein 开始我的第一个 clojure 项目,代码如下: (ns fileops.core (:use [clojure.core :only (slurp)]
我一直在做的一个项目在使用 leiningen interactive 时突然开始抛出异常。运行“lein test”没问题,我的测试运行并通过了。异常仅在使用交互式时发生: Exception in
我有一个hello.clj如下。 (ns hello) (defn hi [] (println "HI")) 通常,我可以按如下方式使用main.clj中的此功能。 hello.clj位于包含mai
我想编写一个 shell 脚本来启动 lein repl,然后在保持 repl 运行的同时提供一些命令。 例如,我可能想做相当于: lein repl (dev) (setup) 我可以通过 echo
我一直在尝试设置 Clojure 以使用泛音。 但是,当我尝试在项目文件夹中启动 Lein 时收到此消息: Exception in thread "main" java.lang.Exception
我正在使用“lein uberjar”为我的项目制作一个可执行的 jar 文件。 jar 已正确创建并按预期运行。 我只想知道是否可以不将我的源 .clj 文件包含在生成的 .jar 中,因为我打算分
我是莱宁根的新手。 当我尝试执行以下操作时, $ lein clean jar 我有 Wrong number of arguments to clean task. Expected [] $ 如何
我想配置 Lein 以便我看到一个彩色的 REPL,就像 Emacs 的 nREPL。我怎样才能做到这一点? 我在谷歌上找不到任何帮助。我需要先学习 Bash 脚本吗? 最佳答案 Ultra ,“用于
我在OS X 10.10.5和Ubuntu 16.04上都运行Sublime Text 3 Build 3117。我刚刚在两者上都安装了Leiningen 2.6.1,然后开始在SublimeREPL
我是一名优秀的程序员,十分优秀!