问题标签 [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.
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”所需的。
而事实上transition
,node_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.0
而shadow-cljs
使用当前的dom-helpers@5.1.3
. 见https://github.com/oliviertassinari/react-swipeable-views/issues/542
可以同时使用吗?还是我必须等到有人修复react-swipeable-views
?
react-native - 经常在带有 shadow-cljs 和 React Native 的 Cider 中看到“REPL 命令超时”。必须重启模拟器才能修复
我正在使用带有 Cider 和 ShadowCLJS 的 Emacs 使用基本的 ReactNative 应用程序。我可以非常一致地使用 REPL 进行开发,但是一旦我不小心保存了一个包含语法错误的文件,我就会失去与 REPL 的通信。我输入的任何内容都会导致延迟,然后是“REPL 命令超时”。我发现修复它的唯一方法是使用npx react-native run-android
. 但后来我失去了我在 REPL 中的所有状态。
npm - 无法在 shadow-cljs 项目中导入本地 wasm npm 包
我正在尝试在我的 shadow-cljs 项目中导入 wasm 包。它捆绑在一个 npm 包中,但我不断收到此错误:
这是我的项目结构:
这是我的 package.json (来自 clojurescript 项目):
我像这样(在 core.cljs 中)运行npm install
并将画布模块添加到我的项目中:
这里似乎有什么问题?
clojurescript - 如何在重新框架应用程序的 js 目录上添加影子 cljs 观察程序?
我使用模板创建了一个基本的重新框架应用程序lein new re-frame my-proj
。这个特定的项目与需要一些 ES6 模块和 ES6 类的框架(ecsy)交互,例如由用户生成的代码,而不是简单地从 cljs 调用。由于 Clojurescript 当前不生成 ES6 代码,因此我在我的项目中创建了一些包装 ES6 模块,我计划从中调用 cljs 代码。
经过一番折腾,我发现没有必要将这些 js 包装器模块转换为完整的 npm 模块'node_modules'
,而是我可以简单地将它们放在我的项目的子目录中,例如resources/libs
,然后将此目录添加:js-options
到shadow-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。但老实说,这有点压倒性。
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?
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
。除非我对消除死代码的期望有什么误解,否则这张图片有问题。如果是这样,我将不胜感激有关如何调查它的任何想法。
clojure - 多页应用的试剂配置
我的project.clj
有
我包括app.js
在我的list.html
, 使用Selmer , 像这样,
在我的结尾list.cljs
,我有
到目前为止,一切都很好。
现在,我想要另一个页面,比如说detail.cljs
,我也喜欢类似地渲染,
问题是,我只有一个app.js
,并且包含它detail.html
也会在那里呈现列表内容。顺便说一句,我想要一个用于list
页面的 url,另一个用于detail
.
问题:
我应该怎么做?
clojurescript - 如何让 CKEditor react 组件在 ClojureScript 中可用
我无法让 CKEditor 反应组件在 ClojureScript 项目中工作。
当我尝试使用组件时
我明白了
我创建了一个简单的 github 项目来说明。
https://github.com/madhat2r/shadow-re-frame-simple-example
如果您克隆它并按照自述文件中的说明进行操作,则可以复制。
谢谢你的帮助!
android - 如何设置 shadow-cljs 以使用 Cordova + Clojurescript 重新加载代码?
我目前正在Cordova
使用Clojurescript
. 我正在使用shadow-cljs
构建项目,但不知何故我找不到让代码重新加载工作的方法。
相反,我必须在开发时使用浏览器构建,因为它允许使用代码重新加载更短的反馈循环。然后,我使用cordova
命令行将应用程序部署到设备/模拟器。
有没有办法在开发时直接使用设备/模拟器shadow-cljs
使代码重新加载工作?
clojurescript - 无法用苹果酒启动 shadow-cljs
我安装了 shadow-cljs 如下:
然后我创建了一个 shadow-cljs.edn 文件,其中包含以下内容:
然后在已经运行的 clj repl 中,我做 Mx cider-connect-sibling-cljs,并选择 shadow repl 选项。但我知道 shadow-cljs Clojurescript REPL 不可用。如何让影子 cljs 工作?