Clojure 如何运行lein run和lein figwheel?

Clojure 如何运行lein run和lein figwheel?,clojure,clojurescript,luminus,figwheel,Clojure,Clojurescript,Luminus,Figwheel,有一段时间我一直在运行leinfigwheel来启动我的应用程序。我使用luminus模板生成了这个项目。然而,最近在连接到数据库时,我发现lein figwheel不允许我连接到数据库。我假设这是因为它没有初始化应用程序。这很奇怪,因为它可以毫无问题地重新加载我的普通clj文件 但是,如果我只使用lein run,那么我就有了数据库连接 在我翻阅了Luminus文档之后,它说我需要同时运行这两个文档。这就是我非常困惑的地方lein run打开一个3000端口,figwheel打开一个3449端

有一段时间我一直在运行
leinfigwheel
来启动我的应用程序。我使用luminus模板生成了这个项目。然而,最近在连接到数据库时,我发现
lein figwheel
不允许我连接到数据库。我假设这是因为它没有初始化应用程序。这很奇怪,因为它可以毫无问题地重新加载我的普通clj文件

但是,如果我只使用
lein run
,那么我就有了数据库连接

在我翻阅了Luminus文档之后,它说我需要同时运行这两个文档。这就是我非常困惑的地方
lein run
打开一个3000端口,figwheel打开一个3449端口。就像我说的,第一个让我连接到数据库,另一个让我自动构建。我是否连接到两个端口?
那么,要实现这两个世界,我错过了什么步骤呢

我也从未同时做过这两件事。但是,我已经分别完成了这些工作,不同的端口处理不同的“服务”。端口3000是http端口。如果您是从luminus模板构建的,那么您可能正在构建一个web站点。因此,请使用浏览器连接到3000

端口3449是figwheel用于将更改推送到浏览器的web套接字端口。因此,您启动了一个命令行lein figwheel,它将查找您的3449端口以与浏览器通信。现在请注意,这个命令行既是一个repl,也是一个监视程序。当您对源代码进行更改时,figwheel会重新编译您的更改并将更改发送到3449处的页面。您还可以通过更改repl的名称空间(即ns)从repl执行代码

两个不同的端口,两个不同的协议。端口3000返回浏览器的是什么?好吧,取决于你的服务器,不管你告诉它什么页面。然而,3449是figwheel默认的型号


真正的问题是如何让figwheel连接到浏览器中的现有页面,而不是由figwheel启动。我想我已经看到有人在你的页面中嵌入了JavaScript函数,它在与figwheel交谈/倾听。

Harley在对另一个答案的评论中提到了这一点,但我想为它担保。首先,以您喜欢的方式运行服务器(我从repl启动,但您也可以使用
lein run
)。然后使用浏览器导航到您选择运行的任何端口。然后在另一个终端上运行
lein figwheel
,它就会连接。

我想你可以从
项目中删除
:服务器端口3449
。clj
:环处理程序示例。服务器/处理程序
并通过端口3000上的
lein run
运行你的应用程序,然后运行
lein figwheel
。我不确定,因为我从来没有使用过
figwheel
,但它对我来说是合乎逻辑的。我做了一些实验。必须在浏览器中打开两页。一个用于实际应用程序,即3000。然后在浏览器中打开另一页以连接到3449以连接到figwheel。一旦连接,此页面就可以关闭。对clojurescript文件的更改将同时更新为这两个文件,因为figwheel正在运行,但只有3000上的页面需要在浏览器中打开。实际上,我觉得不必这样。只需要打开带有localhost:3000的页面,figwheel就可以连接。