更新并没有破坏 goog.object
,它只破坏了对它的“全局”访问。这意味着任何在 ns
形式中直接使用 goog.object/get
而不进行适当的 (:require [goog.object :as ...])
命名的空间都将现在失效。您不能再依赖 goog
命名空间是全局可用的。从技术上讲,这从来就不是有效的,但可以依赖 cljs.core
需要 goog.object
,并确保它总是被加载。
所以要修复这个问题,您只需要添加一个 goog.object
的需求。
然而,还有一个与宏相关的问题更加微妙。一些库可能有发出直接访问 goog.object/get
或类似的宏。这将现在也会失效,即使使用该宏命名空间的一切做得没问题。这是因为在使用该宏的命名空间可能没有自己的 goog.object
需求(也不应该需要它)。
不幸的是,由于这些变化,需要重写宏,以便使用它们自己的辅助函数,然后才能正确地使用 goog.object
,或者切换到使用 unchecked-get
和 unchecked-set
,它们基本上等同于 goog.object/get
和 goo.object/set
。>
根据公告,添加了一个编译器选项,以便过渡更加平滑。
因此,如果问题是出在您自己的代码中,您只需添加 ns 需求。如果在库中,则需要在那里进行修复。或者您可以使用编译器选项 :global-goog-object&array
直至修复完好。