在<.tests class="color:#34495e;" href="https://www.surveymonkey.com/r/clojure2024">2024 Clojure现状调查!

欢迎!请查阅关于页面以获取更多关于本站工作方式的信息。

+1 投票
ClojureScript

首先,感谢_cljs,这是做前端最佳的方式,也是我们业务的生命线之一。我们非常感激。


我在一个新的项目中使用了一些较旧的代码,该项目具有更新的_clj 依赖,现在我收到了一个有趣的编译警告

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 的_clj 依赖项上执行了类似的“二分”操作,发现警告是从版本 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 library 版本时,使用此功能可能会导致断开。

感谢所有人帮助追踪这个问题。

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 闭包依赖并引入不同的依赖。我也同意这一点,我敢肯定这一切都有很好的理由。(感谢你的想法/帮助。
...