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 依赖项上执行了类似“二分查找”的操作,发现警告是从版本 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 最新的版本为依赖。
啊,嗯,好吧。没想到 CLJS 在这样的旧版本,但可能不是什么坏原因。我自己使用 shadow-cljs,它使用最新的版本之一,我从没在那里看到过这个警告。
哦!我没有注意到这一点,但你说的没错,shadow-cljs会排除cljs closure依赖并引入另一个。我也同意,我相当肯定这样做都有很好的理由。:(感谢你的思考/帮助。
...