2

现在我刚刚开始运行lein figwheel我的应用程序。我使用 luminus 模板生成了项目。但是,最近在连接到数据库时,我发现lein figwheel不允许我连接到数据库。我假设这是因为它没有初始化应用程序。这很奇怪,因为它会毫无问题地重新加载我的普通 clj 文件。

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

在四处寻找之后,我重新阅读了 Luminus 文档,它说我需要同时运行这两个文档。这是我非常困惑的地方。lein run打开一个到 3000 的端口,figwheel 打开一个到 3449 的端口。就像我说的,第一个让我连接到数据库,另一个让我自动构建。我是否连接到两个端口?那么我缺少什么步骤来获得两个世界?

4

2 回答 2

1

哈雷在对另一个答案的评论中提到了这一点,但我想保证这一点。首先,随心所欲地运行服务器(我从 repl 启动,但您也可以使用lein run)。然后使用您的浏览器导航到您选择运行的任何端口。然后lein figwheel在另一个终端中运行,它将连接。

于 2016-06-07T18:25:20.357 回答
0

我也是,从来没有同时做过。但是,我已经分别完成了它们,并且不同的端口处理不同的“服务”。端口 3000 是 http 端口。如果您是从 luminus 模板构建的,那么您可能正在构建一个网站。因此,使用浏览器连接到 3000。

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

所以,两个不同的端口,两种不同的协议。3000端口返回给浏览器的是什么?好吧,取决于您的服务器,您告诉它的任何页面。然而,3449 是无花果默认的。

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

于 2015-12-20T17:26:13.973 回答