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

欢迎!请参阅关于页面,了解更多关于这个网站如何运作的信息。

+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依赖项上执行了类似的“二分查找”操作,发现警告从版本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,它使用的是最新版本之一,我 never seen 警告 there。
by
啊!我没有注意到这一点,但你说的对,shadow-cljs排除了cljs closure 依赖,引入了一个不同的依赖。 我同意,我相当确信这些都是有充分理由的。(谢谢你的思考/帮助。)
...