rid3, shadow-cljs & 拖动;开发和生产中的不同行为

rid3, shadow-cljs & drag; different behavior in dev and prod

我正在创建一个应用程序,可用于概览您的 IT 环境。目前,它可以显示 table 以及您环境中的接口及其连接的应用程序。它还能够从该数据创建 SVG 图像。它自身的数据可以通过 API 调用添加。

我通过以下方式开始了一个项目:

leiningen new luminus versiontracker +h2 +shadow-cljs +kee-frame +swagger +(some other)

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

当我运行应用处于开发模式时:

lein repl

lein shadow-cljs watch app

我可以拖动生成的 SVG 文件中的任何项目。我可以点击一个圆圈,然后把它拖到我想要的任何地方。

然而,当我创建 'production' 版本时:

lein uberjar

然后 运行 此应用程序使用:

java -Dconf=config.edn -jar versiontracker.jar

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

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

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

感谢任何帮助

您的错误描述有点欠缺,项目太复杂,无法快速重现。

您在构建时是否收到任何外部推理警告?您在生产版本的浏览器控制台中得到任何 errors/warnings 吗?

最有可能的原因是外部人员。这意味着 属性 个名称,例如 (set! (.-fx d) (.-x event)) 中的名称可能最终会被重命名或删除。因此,它会破坏任何依赖于选择正确名称的行为。有关该主题的更多信息,请参阅 documentation。在适当的地方添加几个 ^js 提示可能就足够了。

您还使用了相当旧的 shadow-cljs 版本(截至今天的当前版本是 2.16.10)。因此,您需要在构建配置中通过 :compiler-options {:infer-externs :auto} 选择加入以获取外部推理警告。较新的版本默认启用此功能。