问题标签 [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 回答
111 浏览

react-native - 运行测试运行器时出现阴影错误

我有以下 shadow-cljs.edn 文件。我正在尝试从浏览器中的测试目录运行测试:

我正在尝试从以下文件运行测试:

但是在 repl 上运行 (shadow/watch :test) 时,我收到以下错误:

如何修复此错误?

0 投票
1 回答
1170 浏览

clojure - 如何正确设置 shadow-cljs 以进行热重载?

我一直在尝试让 shadow-cljs 热重载工作,但我没能,我在我的 project.clj 文件中尝试了多个设置,但没有一个有效。这就是我的 project.clj 的样子:

当我运行时,lein watch我知道它只是在运行shadow-cljs watch app应该运行我的“应用程序”构建。这就是我的开发处理程序的样子(在 中引用:http-handler):

我尝试将我的 :dev 配置文件中的源路径更改["src"],甚至尝试将所有内部文件夹包括在内["src/clj" "src/cljs" "src/cljc"],但没有成功。我什至尝试从头开始创建一个新应用程序,lein new re-frame不做任何更改并运行 lein watch,代码编译并且一切看起来都很好,但是每当我更改 cljs 文件(例如 views.cljs)中的某些内容时,都不会重新渲染/重新加载,我已经访问了 localhost:9630,它为您提供了一个 shadow-cljs 仪表板,其中列出了您的构建,然后单击“强制编译”按钮并在我的应用程序页面中看到 clojurescript 动画,但没有再次重新渲染/重新加载。我注意到当 shadow-cljs 完成编译时,编译了 0 个文件,它是从其他地方获取源路径配置吗?这就是我的样子

在此处输入图像描述

编辑:也许值得一提的是,我在 MobaXterm 中使用 xfce 终端和来自 WSL2 的 emacs 运行 ubuntu,这可能与代码/应用程序而不是热重载有关吗?

0 投票
1 回答
184 浏览

clojurescript - Windows wsl2 热代码重载上带有 Shadow-cljs 浏览器设置的 Emacs Cider

我想使用 shadow-cljs 在 emacs/cider 中的 Windows wsl2 上重新加载热代码(它也不适用于终端中的 shell shadow-cljs watch 命令)。

我应该说奇怪的是,在使用它的每几次尝试中,它实际上会像大多数情况一样正常运行,这非常好,但如果它在大多数时间都不起作用,那么它与生产力不一致。

通常的状态是 repl 将处于初始编译状态。在端口 9630 的浏览器 shadow-cljs 仪表板上显示“未知,等待重新编译”,但当文件更新时,它永远不会更新。

0 投票
2 回答
387 浏览

clojurescript - 所需的 JS 依赖项“readable-stream/writable.js”不可用,它是“node_modules/stream-browserify/index.js”所需的

尝试使用 shadow-cljs 构建 Clojurescript 项目时出现此错误。我已经尝试查找此处描述的语法错误,但我可以通过单行和单次导入得到相同的错误,尽管并非所有导入都会导致相同的错误。

这编译:

这不会:

上述示例的输出为:

包.json

shadow-cljs.edn

我已经看到了类似的构建错误,这些错误通过清除 .shadow-cljs 等并重建来修复,但似乎没有任何帮助。我是影子新手,如果这是显而易见的事情,我深表歉意。有谁知道这里发生了什么?

更新

所以看起来正在发生的事情是stream-browserify 2.0.2需要readable stream ^2.0.2在嵌套的 node_modules 文件夹中安装哪个 npm 。其他地方readable-stream 3.6.0正在安装在顶级 node_modules 中。Shadow 正在尝试解决writer.js3.6.0 版本的可读流而不是 2.0.2 版本。

令人困惑的是,stream-browserify 不是依赖跟踪中给出的 cipher-base 的依赖,而是 node-libs-browser 的依赖,node-libs-browser 本身就是 shadow-cljs 的依赖。

这可能是阴影中的错误还是预期的行为?

更新 2

我创建了一个示例 repo,它尽可能简单地复制了我在这里看到的内容。

0 投票
1 回答
332 浏览

clojurescript - 未捕获的类型错误:$jscomp.inherits 不是函数

尝试使用 shadow-cljs 构建 Clojurescript 项目时出现此错误。该错误发生在优化级别设置为简单的情况下。

浏览器控制台中的完整输出如下所示:

我创建了一个示例 repo,它尽可能简单地复制了我在这里看到的内容。

我已经尝试过清除缓存等等,如此处所述。

将优化设置为高级时,我没有遇到这个问题,但是我更随机地遇到了其他错误,更难阅读堆栈跟踪。由于这似乎是同一个问题以不同的方式出现,并且因为这更容易复制,所以我试图首先让事情在简单模式下工作。我在具有高级编译的完整应用程序中遇到的错误如下所示:

有趣的是,当我打开伪名称时,这些特定的错误就会消失。

有谁知道这里发生了什么?

0 投票
1 回答
35 浏览

docker - Shadow SLJS 未通过 Docker 挂载检测文件更改

当在 Docker 容器中使用 Shadow CLJS(在 Windows 10 上使用 WSL2 作为 Docker 主机)时,源文件通过 Docker 接口安装到容器中,它似乎没有检测到文件中的更改并重新编译。

Shadow CLJS 以:

它编译应用程序并启动开发服务器就好了。但是通过 Docker 主机文件系统更改文件不会触发 Shadow 进程的重建。

我没有看到任何配置选项来配置 Shadow CLJS 如何轮询文件更改;是否可以为更改打开更多手动轮询?或者需要更新什么才能让 Shadow 看到这些文件正在更新?

0 投票
1 回答
84 浏览

clojure - 如何在cljs中调用js实例的方法

我对 cljs 很陌生。我正在用 re-frame 练习 cljs。我遇到了访问 js 实例方法的问题。

如果我尝试调用.setContents@editor ,它是包裹的 j​​s 实例r/atom(实际上,它是 Quill 编辑器实例)。实际上,这段代码在开发模式下运行良好,但它会引发错误,例如xi(...).hi is not a function在发布版本之后。

我猜这.setContents是在发布版本中编译.hi的,所以它无法从 js 实例中找到方法。

我正在shadow-cljs用来构建这个重新构建的项目。

我该如何解决这个问题?

0 投票
1 回答
84 浏览

clojurescript - 如何在 shadow-cljs 中管理静态文件?

例如,我有一个项目的 index.html。

我希望每当我构建项目时,它都会自动复制到公共项目中。有没有内置的方法来实现这一点?

0 投票
1 回答
65 浏览

leaflet - 带有 shadow-cljs 的 react-leaflet 出现不清楚的错误

当我为生产编译代码并部署到服务器但没有在本地获取它时,我收到此错误消息。我很困惑为什么我不能在本地重新生产

这是代码的样子

0 投票
1 回答
28 浏览

svg - rid3,shadow-cljs & 拖动;dev 和 prod 中的不同行为

我正在创建一个可用于概述您的 IT 环境的应用程序。目前,它可以显示一个表格,其中包含您环境中的接口及其连接的应用程序。它还能够根据这些数据创建 SVG 图像。它自己的数据可以通过 API 调用添加。

我从一个项目开始:

为了能够生成支持拖放的 SVG 文件,我将 rid3 添加到项目 .clj 文件中。

当我在开发模式下运行应用程序时:

我可以拖动生成的 SVG 文件中的任何项目。我可以单击一个圆圈并将其拖动到我想要的任何地方。

但是,当我使用以下命令创建“生产”版本时:

然后使用以下命令运行此应用程序:

拖动对象无法正常工作。整个 SVG 被选中,而不是 SVG 图像中的单个对象;这会导致奇怪的拖放行为。

通过控制台窗口查看事件,我可以看到不同的行为。

  • 在开发环境中,如果我抓取一个圆圈(附加了拖动功能),则 sourceEvent 中的 srcElement 是显示在该圆圈顶部的文本。虽然没有选择圆圈,但拖动按预期工作。拖动时所选项目跟随鼠标。
  • 在“生产”环境中,如果我抓住一个圆圈,则 sourceEvent 中的 srcElement 是完整的 svg;这会导致奇怪的拖放行为。选定的项目不跟随鼠标,但项目确实开始以不可预知的方式移动。

转到Version Tracker下载带有标签 V0.3.0 的发布版本,用于生产版本(还有一个带有一些示例数据的 H2 数据库),并通过检查项目将其与开发版本进行比较。

任何帮助表示赞赏