2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于页面 获取更多关于如何使用本站的信息。

+1 投票
ClojureScript
编辑

首先,感谢 cljs,它是进行前端开发的最佳方式之一,也是我们业务的生命线之一。我们非常感激。


我正在一个新的项目中运行一些较旧的代码,该项目的 cljs 依赖已更新,我现在遇到了一个有趣的编译警告

WARNING: JavaScript file found on classpath for library `goog.net.cookies`, but does not contain a corresponding `goog.provide` declaration: jar:file:/home/harold/.m2/repository/org/clojure/google-closure-library/0.0-20211011-0726fdeb/google-closure-library-0.0-20211011-0726fdeb.jar!/goog/net/cookies.js

一切似乎都运行良好,但我仍然想要清理这个输出。

我构建了一个简单的(两个小文件)项目来重现这个问题
- https://github.com/harold/cookie-repro
- 您可以克隆它然后执行

lein cljsprod

我在 Maven 中的 cljs 依赖项上执行了一个类似 'bisect' 的操作,发现警告从版本 1.10.891 开始出现
- https://github.com/clojure/clojurescript/blob/master/changes.md#110891
- 在这个版本之前,不会看到警告


想知道是否有人已经看到过这个警告,或者类似的警告,以及应该采取哪些步骤。

再次感谢您的时间和考虑!

2 个答案

+1 投票
 
最佳答案

这绝不是cljs的问题 - 感谢对此事的关注。

对于未来的搜索者,变更发生在google-closure-library"goog.net.cookies"已被弃用并移除,转而使用"goog.net.Cookies"以及一个企业级工厂单例获取器初始化。

链接: https://github.com/google/closure-library/releases/tag/v20220301

当cljs升级到更新的closure库版本时,将会有这个警告。

感谢大家帮助追踪这个问题。

0 投票

你是否有任何对google-closure-library的显式依赖?警告中的版本非常古老。找出它的来源,并移除显式依赖 - CLJS jar自身指定了它。

谢谢!据我所知,我没有(至少我不这么认为),这是项目文件(来自问题中链接的仓库):https://github.com/harold/cookie-repro/blob/main/project.clj ... 唯一的依赖是最新的clj和cljs版本(警告中看到的版本号`20211011`是cljs 1.11.60的显式依赖)。
哦,确实如此。我没有期望CLJS在这个这么旧的版本上,但可能没有坏的原因。我自己使用shadow-cljs,并使用其中最新版本,但我从未在那里看到这个警告。
啊!我没有注意到这一点,但你是对的,shadow-cljs 排除了 cljs 关闭依赖,并引入了另一个。我同意,我相信这背后肯定有很好的理由。(谢谢你的思考/帮助。)
...