当存在 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 编译器的限制还是明确不支持,但确实减少了可以用于 node_modules 的节点包的数量。
当前的解决方案是重写库代码以消除循环依赖,或将 cljsjs 作为替代方案。