问题标签 [shadow-cljs]

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

npm - 如何使用 react-swipeable-views 解决 shadow-cljs 的 NPM 依赖问题?

我有一个 ClojureScript 项目,使用shadow-cljs. 在这个项目中,我使用的是 NPM 包@material-ui,它工作正常。

现在我想使用react-swipeable-views。因此,我扩展了我的package.json

当我尝试要求时,["react-swipeable-views" :as sv]我从 shadow-cljs 收到此错误:

所需的 JS 依赖项“dom-helpers/transition/properties”不可用,它是“node_modules/react-swipeable-views/lib/SwipeableViews.js”所需的。

而事实上transitionnode_modules/dom-helpers/. 但是里面import transitionInfo from 'dom-helpers/transition/properties';node_modules/react-swipeable-views/src/SwipeableViews.js

它看起来像一个依赖错误react-swipeable-views,但我是 NPM 的新手。

有什么建议吗?或者如何调试?

更新

它的接缝react-swipeable-views取决于过时的dom-helpers@3.4.0shadow-cljs使用当前的dom-helpers@5.1.3. 见https://github.com/oliviertassinari/react-swipeable-views/issues/542

可以同时使用吗?还是我必须等到有人修复react-swipeable-views

0 投票
1 回答
194 浏览

react-native - 经常在带有 shadow-cljs 和 React Native 的 Cider 中看到“REPL 命令超时”。必须重启模拟器才能修复

我正在使用带有 Cider 和 ShadowCLJS 的 Emacs 使用基本的 ReactNative 应用程序。我可以非常一致地使用 REPL 进行开发,但是一旦我不小心保存了一个包含语法错误的文件,我就会失去与 REPL 的通信。我输入的任何内容都会导致延迟,然后是“REPL 命令超时”。我发现修复它的唯一方法是使用npx react-native run-android. 但后来我失去了我在 REPL 中的所有状态。

0 投票
1 回答
237 浏览

npm - 无法在 shadow-cljs 项目中导入本地 wasm npm 包

我正在尝试在我的 shadow-cljs 项目中导入 wasm 包。它捆绑在一个 npm 包中,但我不断收到此错误:

这是我的项目结构:

这是我的 package.json (来自 clojurescript 项目):

我像这样(在 core.cljs 中)运行npm install并将画布模块添加到我的项目中:

这里似乎有什么问题?

0 投票
1 回答
527 浏览

clojurescript - 如何在重新框架应用程序的 js 目录上添加影子 cljs 观察程序?

我使用模板创建了一个基本的重新框架应用程序lein new re-frame my-proj。这个特定的项目与需要一些 ES6 模块和 ES6 类的框架(ecsy)交互,例如由用户生成的代码,而不是简单地从 cljs 调用。由于 Clojurescript 当前不生成 ES6 代码,因此我在我的项目中创建了一些包装 ES6 模块,我计划从中调用 cljs 代码。

经过一番折腾,我发现没有必要将这些 js 包装器模块转换为完整的 npm 模块'node_modules',而是我可以简单地将它们放在我的项目的子目录中,例如resources/libs,然后将此目录添加:js-optionsshadow-cljs.edn

所以现在一切正常,但唯一的问题是如果我在 'resources/public'中编辑任何 js 文件,lein.bat dev编译器不会检测到更改。我可以进去对“.cljs”文件进行模拟更改,这确实会导致编译器重新编译,但它仍然没有接收到对“.js”文件(或“.js”文件所做的更改)。 mjs 的文件)。我必须通过 ctrl-c 杀死编译器并重新启动它以传播更改。不幸的是,这需要大约 15 秒来编译,因为它是一个完整的编译。

我尝试添加'resources/libs'到我的'project.clj'

无济于事。

我还尝试从以下位置删除已编译的 js 文件<my_proj-dir>/resources/public/js/compiled/cljs-runtime

在这种情况下,编译器会重新生成文件(在进行模拟 .cljs 更改时),但它仍然使用以前的版本,例如它必须使用缓存版本。

有没有办法可以在这个 js 目录中添加一个观察者,这样我就可以进行增量构建?'src/cljs' 目录上显然已经有一个观察者了。我咨询了shadow-cljs 用户 gd。但老实说,这有点压倒性。

0 投票
2 回答
199 浏览

clojurescript - 如何将 Framework 7 与 shadow-cljs 和 clojurescript 集成

当我尝试在 clojurescript 项目中初始化 Framework7 和 Framework7-React 时,使用 shadow-cljs 出现如下错误:

Framework7 初始化通常只包含以下内容

有一个 hacky 解决方案,它涉及两个单独的构建管道,以便在一个简单的 shadow-cljs 示例项目中启动并运行 Framework7。

我创建了一个显示两个版本的测试项目,即发生错误的非工作 clojurescript 版本,可以通过以下方式运行:

它使用 client2.cljs

工作版本使用 ES6 导入语法初始化 Framework7,并使用 webpack 进行转译。

它会产生上述错误。

我不详细了解,因为涉及多个包装器,Framework7 中到底发生了什么。

如何正确导入和使用带有 Clojurescript 和 Shadow-CLJS 的 Framework7?

0 投票
1 回答
224 浏览

clojurescript - Clojurescript 死代码消除显然不起作用

我有一个带有以下准系统前端应用程序的 ClojureScript 项目(main作为入口点):

这编译为预期的 95,2 kB。一旦我取消注释[cljs-http.client :as http],总跳转到 299,7 kB;包括reagent进一步将其提高到 457,4 kB。由于我没有从这些命名空间调用任何函数,Google Closure 编译器不应该将它们作为死代码消除吗?

我的 shadow-cljs.edn 的相关部分如下:(仅省略了三个其他构建,我可能会提到,确实使用了被注释掉的库):

我通过运行得到上面的数字shadow-cljs release spa-prod。除非我对消除死代码的期望有什么误解,否则这张图片有问题。如果是这样,我将不胜感激有关如何调查它的任何想法。

0 投票
2 回答
362 浏览

clojure - 多页应用的试剂配置

我的project.clj

我包括app.js在我的list.html, 使用Selmer , 像这样,

在我的结尾list.cljs,我有

到目前为止,一切都很好。

现在,我想要另一个页面,比如说detail.cljs,我也喜欢类似地渲染,

问题是,我只有一个app.js,并且包含它detail.html也会在那里呈现列表内容。顺便说一句,我想要一个用于list页面的 url,另一个用于detail.

问题:

我应该怎么做?

0 投票
1 回答
105 浏览

clojurescript - 如何让 CKEditor react 组件在 ClojureScript 中可用

我无法让 CKEditor 反应组件在 ClojureScript 项目中工作。

当我尝试使用组件时

我明白了

我创建了一个简单的 github 项目来说明。

https://github.com/madhat2r/shadow-re-frame-simple-example

如果您克隆它并按照自述文件中的说明进行操作,则可以复制。

谢谢你的帮助!

0 投票
1 回答
114 浏览

android - 如何设置 shadow-cljs 以使用 Cordova + Clojurescript 重新加载代码?

我目前正在Cordova使用Clojurescript. 我正在使用shadow-cljs构建项目,但不知何故我找不到让代码重新加载工作的方法。

相反,我必须在开发时使用浏览器构建,因为它允许使用代码重新加载更短的反馈循环。然后,我使用cordova命令行将应用程序部署到设备/模拟器。

有没有办法在开发时直接使用设备/模拟器shadow-cljs使代码重新加载工作?

0 投票
0 回答
334 浏览

clojurescript - 无法用苹果酒启动 shadow-cljs

我安装了 shadow-cljs 如下:

然后我创建了一个 shadow-cljs.edn 文件,其中包含以下内容:

然后在已经运行的 clj repl 中,我做 Mx cider-connect-sibling-cljs,并选择 shadow repl 选项。但我知道 shadow-cljs Clojurescript REPL 不可用。如何让影子 cljs 工作?