更新并没有破坏 goog.object
,它只是破坏了对它的“全局”访问。这意味着任何直接在不正确的 (:require [goog.object :as ...])
中使用 goog.object/get
的命名空间都将现在会中断。您不能再依赖于 goog
命名空间全局可用。在技术上这从未有效,但可以依赖它是加载的。
要正确修复此问题,只需添加一个 goog.object
require。
然而,还有一个更多微妙的问题,它与宏有关。某些库可能有宏,会直接产生形式来访问 goog.object/get
或类似的。现在即使使用该宏的命名空间一切都做得正确,这也会导致破坏。这是因为使用该宏的命名空间很可能没有自己的 goog.object
require(并且不应该需要它)。
不幸的是,由于这些变化,必须将宏重新编写,以便使用它们自己的辅助函数来正确使用 goog.object
,或者切换到使用 unchecked-get
和 unchecked-set
,它们基本上等价于 goog.object/get
和 goo.object/set
。
根据公告,增加了一个编译器选项,以使过渡更加平滑。
所以如果问题是出在您的代码中,您只需添加 ns require。如果是库中,需要在这里修复。或者您可以使用编译器选项 :global-goog-object&array
直到问题解决。