问题标签 [figwheel]

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 投票
1 回答
646 浏览

testing - 如何从 figwheel repl 中的测试目录运行 cljs.test 用例?

我正在尝试基于figwheel quickstart开始一个经过单元测试的 clojurescript 项目,但添加了一些测试。我成功地尝试将一个基本的 cljs.test 案例(test-numbers来自cljs.test 文档)直接添加到我的主文件中,core.cljs. 但是,当我将它分解到另一个文件中仅用于测试时,我无法从 figwheel repl 运行它。以下是相关文件的当前状态,以及我的 repl 交互。我需要更改什么,以便我可以在与我的实现不同的文件中进行可运行的测试?

项目.clj:

src/main/core.cljs:

src/test/test.cljs:

在调用lein cleanand之后rlwrap lein figwheel

我期望在 wheel.test 命名空间中运行测试的结果与在 wheel.core 命名空间中运行测试的结果完全相同。

另请注意,这是一个增量步骤 - 一旦我了解它是如何工作的,我打算为测试设置一个单独的构建配置,以便我可以单独运行测试 - 我只是想采取一些小步骤,我正在坚持这个。

0 投票
1 回答
279 浏览

node.js - 使用 Express.JS 运行 FIgwheel

Running lein figwheel,据我了解,在 3449 端口在幕后启动了一个简单的静态托管服务器(通过环)。这适用于我的系统。

问题是我通过 node.js 在 port 托管我自己的文件3000。当我运行 figwheel,然后启动我的 express.js 服务器时,更改我的前端文件奇怪地影响两个端口相同(即,更新文件会导致两个页面立即重新呈现)。

问题:3000但是,如果 figwheel 对 express.js 端口服务器一无所知,这怎么可能呢?而且,无论如何,这是在我自己的快速服务器上使用 figwheel 的最佳方式(即,运行两个实例,一个默认为 3449,我自己的端口为 3000)?

0 投票
1 回答
120 浏览

clojurescript - Figwheel 未连接到 HTTPS

我正在使用Figwheel编译和调试我的 ClojureScript 应用程序。太棒了!

我有一个问题,即当我的应用程序在本地使用 HTTPS 运行时(https://localhost:3000),Figwheel 无法识别它并且无法连接到浏览器。

我需要在我的项目中添加任何东西来解决这个问题吗?

0 投票
1 回答
601 浏览

clojurescript - 如何使 figwheel 以自定义初始命名空间开始?

我的 clojurescript 代码的 project.clj 指定:repl-options {:init-ns my-project.core},我通过start-figwheel!. 在figwheel文档中它说

但是当 figwheel 启动时,它会将我放入cljs.user命名空间。我怎样才能让无花果拿起这个选项?

我的 figwheel.clj 如下所示:

我基本上是从谷歌小组问这个问题

0 投票
1 回答
94 浏览

websocket - 无花果重新加载时Websocket回调未更新

我的代码如下所示:

我正在使用figwheel. 我注意到,当我更改回调(on-message、、on-error等)时,应用程序会重新加载,但这些函数的旧版本仍然会被调用。

我理解这是因为旧版本的函数仍然被 websocket 引用。

是否有一种模式可以使此代码可重新加载?也许我应该使用core/async?如果是这样,那会是什么样子?

0 投票
1 回答
75 浏览

clojure - Code not called from go block, but it works from REPL

I have code that updates the DOM. new-recipe! calls an API to get a new recipe string. update-recipe-state next updates this state in the screen. Finally we have a call to update-transition-buttons.

The update-transition-buttons has some delays between the steps (using the timeout code here) looks as follows:

So it splits the response to a string. updates-buttons changes state on the page by adding some buttons (this is visible). Again there is a timeout, and then I want to add the event handlers to the buttons. This is where it goes wrong.

The routine to create event listeners (which also contain a console.log) look as follows:

Again you see a console.log message that should happen for each elements that is passed. The output I get in the Firefox console is:

[FIRST SERVICE CALLED]
[NEXT SERVICE CALLED]
[DISPLAY LIST OF STEPS]: ["Step1", "Step2", "Step3"]

What I expect is:

[FIRST SERVICE CALLED]
[NEXT SERVICE CALLED]
[DISPLAY LIST OF STEPS]: ["Step1", "Step2", "Step3"]
Listening to Step1
Listening to Step2
Listening to Step3

So the event handlers (which depend on the HTML generated in the step before) are not added for some reason and the console.log message is not displayed.

When I call the same code from the REPL I do see the output, i.e.:

repl=> (set-button-event-handlers! ["Step1","Step2", "Step3"])
(#object[Object [object Object]] #object[Object [object Object]] #object[Object [object Object]])

And the console output is:

Listening to Step1
Listening to Step2
Listening to Step3

Why can set-button-event-handlers! be called from the REPL, but not in the update-transition-buttons method after update-buttons?

0 投票
2 回答
585 浏览

vagrant - Figwheel 在使用 vagrant 时不会热重载或更新文件保存

当使用 vagrant box 运行 figwheel 时,似乎没有注意到文件更改,因此 figwheel 不会更新/重新加载页面。

0 投票
2 回答
2553 浏览

single-page-application - 如何部署单页应用程序。用 ClojureScript / Figwheel 编写到静态服务器?

我正在玩 Figwheel 并编写一个不需要任何服务器端智能的简单单页应用程序。

原则上,这个应用程序。可以放置在任何静态网络服务器上。

但是我如何实际部署它?看起来我的 Figwheel 开发环境中的 main.js 正在设置 figwheel 连接。

我实际上需要在静态服务器上放置哪些 js 和 html 文件?Figwheel 创建了它们,还是我需要创建一个新的 main.js 和 index.html?我在哪里可以找到示例?

该文档非常适合如何开始使用 Figwheel,但令人惊讶的是,在您完成开发后该做什么却保持沉默。

0 投票
2 回答
1277 浏览

clojure - 如何使用 ClojureScript 和 Figwheel 与后端通信?

注意:总的来说,我是一名经验丰富的程序员,使用 clojure,但从未进行过认真的 Web 开发。

我使用 Chestnut 建立了一个基本的 ClojureScript 项目,并顺利完成了“Hello World”步骤。但是我真的很想和我的后端谈谈。为此,我将试剂代码重新定义为

单击时会得到 404 响应。所以至少我在和某人说话。我还可以在 server.log 文件中看到我的获取请求的证据。然而,在这一点上,我正在努力解决一些概念问题。

首先,http/get 是一个在 clj-http.client 中定义的函数,它不是 Chestnut 设置的一部分。如果我不得不去寻找图书馆来发送像获取请求这样基本的东西,那感觉就像我已经偏离了轨道。

其次,用户命名空间的文件具有 Chestnut 预定义的以下行:

我看不到任何使用过 http-handler 的地方。所以我不明白这个定义到底是做什么的。

也是我理解 Figwheel 的方式,当我调用“运行”时,它会启动一个新的 Web 服务器,然后 a) 为 index.html 提供服务,b) 通过某个 TCP 端口连接到我的浏览器并开始通过该连接注入新的 JavaScript . 第二部分对我来说非常投机。如果这确实发生了,我的下一个问题是 Figwheel 是否也需要位于该连接的另一端,或者浏览器是否有一些允许从外部重新加载代码的通用 API。

最后,我可以说 mypage/server.clj 文件(如下)中定义的环路由和 http-handler 正在以某种方式被调用,因为修改这些会更改 get-request 中的错误,但是对我来说如何完全是个谜这行得通。我理解它的方式,我从浏览器发送的 get-request 被发送到站点的来源 Figwheel-server。我没有理由相信 Figwheel 对我在服务器文件中定义的 http 处理程序一无所知。

0 投票
0 回答
22 浏览

node.js - 在一个 jvm 中运行两个 figwheel 服务器

是否可以通过 figwheel-sidecar 从一个进程/jmv 中启动两个 figwheel 服务器?

在开发环境中,我正在尝试启动一个无花果服务器以与网络浏览器进行通信。另一个应该使用 node.js 应用程序。我想避免为此运行两个 jvm。

我可以设法一个接一个地运行它们,浏览器和 nodejs 连接。但似乎,每当另一个呼叫start-figwheel!完成后,正在关闭另一个连接。在我看来,figwheel 只是为了拥有一台服务器而完成的,这是真的吗?