问题标签 [cljsbuild]

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 回答
227 浏览

testing - 如何获得简单的 clojurescript 编译的直接结果?

我希望能够在测试时将 javascript 代码注入我的应用程序。按照这种推理,我在 repl 中执行以下操作。

我那时

是的,看来这就是我想要的。我可能弄错了,但我认为我不需要“base.js”依赖项,因为它已经包含在正在运行的正在测试的应用程序中(正在使用 :simple :optimizations)。

我的问题是,我怎样才能得到文件的内容out/x8LL7.js?我只想要写入的字符串,out/x8LL7.js因为我对从cljs.closure/build.

如果这不容易,那我想我可以解析返回的 deps 字符串,自己打开文件然后使用内容;没有大碍。不过,我希望有更直接的方法。

0 投票
1 回答
826 浏览

clojure - Clojurescript 命名空间刷新

我正在使用 lein cljsbuild 并想找到一种方法来重新加载我的编译文件而不刷新浏览器。从我的浏览器连接的 REPL 中是否有内置方法可以做到这一点?

0 投票
6 回答
5995 浏览

leiningen - Clojurescript 库 - goog.require 找不到

clojurescript 的新手,并在此处完成“现代 CLJS”教程。

它指示通过将其添加到以下内容来拉入多米纳project.clj

ns然后通过在表单中​​引用它在你的脚本中使用它

但是,当我实际在浏览器中运行它时,我会在控制台日志中看到以下内容。

好像我在某处遗漏了一些声明?但作为新手,整个构建过程相当不透明。非常感谢任何故障排除提示。

0 投票
1 回答
1823 浏览

leiningen - 在 ClojureScript 中使用 Cljsbuild 编译外部 JS 文件

我正在尝试编译我们使用 lein-cljsbuild 拥有的一些 JS 库,以将它们集成到我们的 ClojureScript 代码库中。首先,我在每个文件的顶部添加了一些 goog.provide,这些文件根据它们的命名空间(就像在 Java 中一样)在目录树中分层组织。那就是命名空间 abc 在 src-js/libs/a/b/c.js

我已将 JS 文件放在 src-js/libs 中项目的根目录中,并且我有以下 : lein-cljsbuild 的编译器选项:

没有任何 JS 文件被编译到已编译的应用程序文件中。怎么了?

我还尝试将它们放入 resources/closure-js/libs 中,但没有成功。

我正在使用 lein-cljsbuild 0.3.0。

0 投票
1 回答
1329 浏览

clojure - lein ring 服务器不会自动重建

我正在编写一个小型 clojurescript 项目,并遵循了许多使用 lein ring 作为开发 Web 服务器的 lein cljsbuild 示例。

lein ring server我曾经在本地机器上运行以提供网站服务。现在,当我更改包含打嗝 html 定义的 clj 文件时,似乎 lein ring 服务器不会自动重建和重新启动。

根据https://github.com/weavejester/lein-ring应该是这种情况(也许我读错了,但它说重新加载应该是默认值)。

我的 project.cljs 或多或少等同于https://github.com/emezeske/lein-cljsbuild/blob/master/example-projects/advanced/project.clj

有任何想法吗?

0 投票
1 回答
617 浏览

clojurescript - 在 Clojurescript 中定位不匹配的分隔符

有时,我发现自己处于不匹配大括号、括号或方括号的情况:{}()[]在 Clojurescript 中。我正在使用leininingencljsbuild我很难追踪错误来源。通常它归结为这样的事情:

Compiling "resources/public/js/whitespace.js" failed. clojure.lang.ExceptionInfo: java.lang.RuntimeException: Unmatched delimiter: ) at line 1

随后是一个扩展的堆栈跟踪,似乎不包含文件名、行号信息。

我怎样才能获得更多有用的信息?

到目前为止我的解决方法

  • 使用版本控制来查找文件及其先前状态的差异。然后查看括号更改的位置。

  • 广泛使用 vim 的括号%来进行救援。

0 投票
3 回答
734 浏览

clojure - lein-cljsbuild 源-cljs 目录-> 输出-js 目录?

查看 cljsbuild 文档 https://github.com/emezeske/lein-cljsbuild

这个需要

:source-paths 作为目录

:output-to 作为 js 文件

为什么不源目录-> 输出目录?

我们如何管理要编译为许多输出文件的许多源文件?

是否有任何配置可以映射 *.cljs @sourceDir -> *.js @targetDir ?

0 投票
1 回答
891 浏览

node.js - ClojureScript + momentjs (node.js) 以 .format("dddd, MMMM Do YYYY, h:mm:ss a") 失败

我正在尝试在 node.js + clojure 部署momentjs上向控制台显示当前日期时间格式。

工作节点js代码:

控制台输出:

所以,我尝试了一个 clojureScript 代码,如下所示:

控制台输出变为

由于某种原因,日期时间部分显示为一堆nullundefined 。

编译好的js代码:

问题发生的地方看起来没有那么问题:

任何想法?谢谢。

0 投票
2 回答
1528 浏览

clojurescript - 同一页面上有多个 ClojureScript 文件

我有一个使用 Jasmine 测试 JavaScript 的项目。我正在尝试切换到使用 ClojureScript 作为前端。我project.clj的就像

因此,所有.cljs文件都src/clojurescript被编译为main.js,所有文件.cljsspec/clojurescript被编译为mainSpec.js. 当我加载 Jasmine 页面时,两个.js文件都已加载,但测试未运行。在控制台中,我得到Error: Namespace "goog.debug.Error" already declared. 两个.js文件在顶部都有相同的 ~30k 行 google 关闭代码,这导致了错误。如果我从中删除此代码mainSpec.js运行良好。有没有办法告诉 cljsbuild 将此代码从规范文件中删除?

0 投票
1 回答
408 浏览

namespaces - 引用外部 clojurescript 命名空间

如果在 .cljs 文件中我定义了这样的文件:

主文件

第二文件.cljs

我收到“引用的 var project.secondfile/my-var 在 src-cljs/main.cljs 中不存在”。但是,它在浏览器中正常工作,因为两者都已编译(并且使用编译 :whitespace 它们可以很好地相互引用)。但显然,它在 bREPL 中不起作用,因为它们没有相互引用。

这是不可避免的事情还是我做错了什么?

谢谢!