当在node_modules中存在循环依赖项时,编译器会抱怨缺少提供的内容。
原因是out/cljs_deps.js中的'goog.addDependency'语句的顺序。
goog.addDependency("../node_modules/lib1.js", (link: 'lib1'), (link: 'lib2')); // 这一行将失败,因为'lib2'尚未提供
goog.addDependency("../node_modules/lib2.js", (link: 'lib2'), (link: 'lib1'));
受影响node_modules的示例:apollo-client 1.9.2
我不确定这是否是closure compiler的限制或明确不支持,但这确实减少了使用node_modules可以包含的node包数量。
当前的解决方案是将库代码重写为没有循环依赖项或切换到cljsjs。