问题标签 [luminus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2548 浏览

clojure - Leiningen、Compojure、Luminus 和 Ring 是什么关系?

我开始了 Clojure 的新学习阶段。我想构建一个 Web 应用程序,但我不知道该使用哪一个。我在网上搜索了几个小时,我发现的所有东西都相互重叠,我对此有点困惑。

我在 ASP.NET MVC 和 JavaEE 方面有经验,所以如果有什么将 Clojure Web 编程与这些经验联系起来,我很高兴听到。

Leiningen、Compojure、Luminus 和 Ring 是什么关系?

0 投票
1 回答
588 浏览

rest - 在 Clojure Luminus 中编写文件的简单 API

作为学习 Luminus 的开始,我正在尝试创建一个简单的 API 来与本地服务器环境进行交互。编写一个基本文件似乎是一个很好的开始方式,但我无法让它工作。请参阅我的代码home.clj

Luminus 只返回两个字Not Found

第二个也不起作用的例子:

0 投票
1 回答
399 浏览

clojure - Luminus / Compojure 路由中的多个可选参数?

我想创建一个具有多个可选参数的路由,通过 URL 中是否存在“关键字”来检测,并以任何顺序进行处理。

例子:

这甚至可能吗?我可以看到组合一个宏来创建路由,但这至少会创建一个阶乘的路由。电话可能会打通 1 个/小时,所以我可以处理缓慢的响应时间。但是使用宏为 7 个可选参数创建 5000 条路由是否合理?

0 投票
1 回答
177 浏览

clojure - Clojure 环服务器似乎缺少对 slf4j 的依赖项

我一直在尝试遵循一些关于在 Clojure 中构建 Web 应用程序的教程,但我一直遇到同样的问题。以最简单的情况为例,我尝试遵循本教程:http ://drtom.ch/posts/2012-12-10/An_Introduction_to_Webprogramming_in_Clojure_-_Ring_and_Middleware/

当我进入启动服务器的步骤(run-jetty handler {:port 8383})时,我收到以下错误:

NoSuchMethodError org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple; org.eclipse.jetty.util.log.JettyAwareLogger.log (JettyAwareLogger.java:613)

我让lien 向我展示了类路径,果然,org.slf4j.helpers.MessageFormatter 不在任何地方。

我在我尝试过的几乎所有基于环的网络教程中都遇到过这个问题,所以要么我配置了一些奇怪的东西(我更新并重新安装了 lein,吹走了我的 ~/.m2 并重建了等等),或者无数的依赖关系发生了变化,这些依赖关系组合在一起构成了类路径。

有什么想法吗?

编辑

我有更多信息——我在 virtualbox 中创建了一个 VM,安装了 OpenJDK 和 lein,并在那里创建了一个项目。它工作得很好。由于我是在与主机共享的目录中创建的,因此我尝试在主机的同一目录中执行“lein ring server”,但由于上述错误而失败。

所以我在虚拟机和主机中都做了“lein classpath”并比较了结果——它们是相同的。我还检查了他们运行的是相同 JVM 的相同版本(OpenJDK 64 位版本 24.51-b03)。

那么,如果他们使用相同的类路径运行相同的 JVM,还剩下什么?

0 投票
2 回答
352 浏览

multithreading - 多线程 Clojure Luminus 服务器?

我不知道如何表达这一点,但任何关于如何实现以下行为的想法都会很棒。

我有一个对命令行程序进行长时间运行调用的 Web 服务器。我希望服务器处理多个长时间运行的调用,但在调用完成之前不返回给定的请求。这不是一个网站,所以调用运行很长时间是可以的,客户端也不会超时。关于如何实现这一目标的任何想法?

这个链接是否相关?在 clojure 中编写多路复用服务器?

0 投票
1 回答
541 浏览

logging - 在 Compojure 应用程序中在哪里初始化日志记录?

我有一个使用 Luminus 生成的 Compojure 应用程序。我想使用clj-logging-config配置日志记录,但我正在为此苦苦挣扎。我将(!set-logger)命令放在init函数中(用{:ring {:init}in声明project.clj),但我无法解释这种行为。

如果我只是说(!set-logger),那么它会记录一些东西。如果我说(set-logger! :pattern "%d - %m%n"),那么它会抱怨:

设置日志级别似乎没有任何效果。

将 移到(!set-logger)不同模块的顶部似乎会导致这些模块按预期记录,但我找不到合适的位置来放置一个(!set-logger)包含我想要的所有参数的单个模块并让它影响整个应用程序。

0 投票
3 回答
763 浏览

mongodb - 在 Clojure Luminus Web 框架中配置 MongoDB

我在 Luminus 项目中配置 MongoDB 数据库时遇到问题。考虑到 lein 模板,这应该非常简单:https ://github.com/yogthos/luminus-template 。键入lein new luminus <name> +mongodb将为您提供默认的 mongoDB 设置,即文件:src/app-name/db/core.clj要运行服务器,键入应打开 Web 浏览器并默认lein ring server指向它的类型。localhost:3000

将显示一个默认主页,对我来说,它告诉我“需要 MongoDB 配置”。它告诉我可以在同一个文件中配置它:src/app-name/db/core.clj.我尝试了许多不同的东西,但我目前正在尝试并且对我最有意义的是以下内容:

不幸的是,当我连接浏览器时,我仍然收到相同的“需要 MongoDB 配置”消息。我还尝试使用 CURL 和在我的应用程序中定义的各种 HTTP 路由来访问数据库但没有成功。奇怪的是,这在 REPL 中有效。

编辑:为了更清楚,这是 REPL 中的示例:

在代码中,我有以下几部分:

这是在浏览器中加载的页面:

显示对 mongodb 的调用不起作用的页面

正如我们所看到的,replies列表是空的,而它应该是 ["mew-mew" [1.0 "hello"]]我们在 REPL 中看到的。

编辑:另一个奇怪的是,就在键入后加载浏览器时,我可以在终端lein ring server中看到以下输出:mongodb

我还能做些什么来连接到 MongoDB?谢谢你的帮助。

0 投票
1 回答
3263 浏览

clojure - lein ring server:“这不是任务”

我正在尝试为 compojure 构建 hello-world 示例,但无法启动 ring 任务。

我还尝试在发光网站上使用 hello-world ,它还说它找不到该任务或其他示例,其中 lein 抱怨我使用了错误数量的参数,即使我直接从他们的教程

0 投票
1 回答
937 浏览

clojure - 在 compojure 中实现 oauth2,如何在响应用户请求之前等待第二个 oauth2 回调?

我想让 OpenID 连接在我的小 luminus 项目中工作。我对 luminus/ring/compojure 中的工作流程有点陌生(主要来自 django、flask 和 servlet)。我已经成功重定向到谷歌,所以我从谷歌得到了“代码”,但是我需要在登录用户之前再向谷歌发出一个请求,这个调用需要另一个用户没有参与的回调,所以我需要像承诺一样搁置用户的请求,但我不确定这部分在 compojure 中是如何工作的。

在此方法结束时,我应该向用户发送一条消息,说明他们已登录,但我需要等到请求返回。这个工作流程在 luminus 中是如何处理的?


解决了。我没有意识到我可以忽略回调参数。

0 投票
1 回答
1042 浏览

clojure - 网络连接 REPL 与 leiningen/ring/compojure/luminus

我正在使用使用 ring/compojure 的 luminus Web 框架运行服务器,并且我希望能够使用 clojure repl 连接到我的代码。我知道有一个nrepl代表网络复制的服务器,您可以通过以下方式连接到它:`lein repl :connect user@host:port (或一些不同的协议,我已经尝试了一些东西)。

以下代码repl.clj是在您使用 `lein new luminus [project-name] 自动生成 luminus 项目时创建的(实际上我添加了附加 clojurescript repl 所需的 browser-repl 片段)。

我一直不成功lein repl :connect ...

  1. 如何将 clojure repl 附加到服务器上的代码?

感谢所有的帮助