首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛出IllegalArgumentException的grunt闭包编译器模块

问抛出IllegalArgumentException的grunt闭包编译器模块
EN

Stack Overflow用户
提问于 2016-01-26 11:08:08
回答 1查看 314关注 0票数 0

我正在使用这叉的咕噜-闭包编译器任务来构建多个文件与闭包编译器。

我设置了以下编译器标志:

代码语言:javascript
复制
--module_output_path_prefix .\  --js lib\test\mod-c.js  --module test_mod__c:1  --js lib\test\mod-d.js  --module test_mod__d:1  --js lib\test\mod-b.js  --module test_mod__b:1:test_mod__c,test_mod__d  --js lib\test\mod-a.js  --module test_mod__a:1:test_mod__b,test_mod__d  --compilation_level "ADVANCED_OPTIMIZATIONS" --language_in "ECMASCRIPT5_STRICT"

每当我运行这个程序时,我都会得到以下错误:

代码语言:javascript
复制
java.lang.IllegalArgumentException: expected one element but was: <test_mod__c, test_mod__d>
at com.google.common.collect.Iterators.getOnlyElement(Iterators.java:317)
at com.google.common.collect.Iterables.getOnlyElement(Iterables.java:289)
at com.google.javascript.jscomp.JSModuleGraph.getRootModule(JSModuleGraph.java:150)
at com.google.javascript.jscomp.AnalyzePrototypeProperties.<init>(AnalyzePrototypeProperties.java:122)
at com.google.javascript.jscomp.CrossModuleMethodMotion.<init>(CrossModuleMethodMotion.java:79)
at com.google.javascript.jscomp.DefaultPassConfig$97.create(DefaultPassConfig.java:2170)
at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:285)
at com.google.javascript.jscomp.PhaseOptimizer$Loop.process(PhaseOptimizer.java:458)
at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:217)
at com.google.javascript.jscomp.Compiler.optimize(Compiler.java:1901)
at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:681)
at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:89)
at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:632)
at com.google.javascript.jscomp.Compiler$2.call(Compiler.java:629)
at com.google.javascript.jscomp.CompilerExecutor$2.call(CompilerExecutor.java:93)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

根据我能找到的一些消息来源,这通常是由一个无效的依赖树引起的,但是我不明白为什么它是错误的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 22:46:02

输出模块必须描述一棵树。这个要求意味着一个单一的基本模块,所有其他模块都会从这个模块中下降。基本模块是不依赖于其他模块的模块。

您的标志列出了2个基本模块:

  • --module test_mod__c:1
  • --module test_mod__d:1

这些是基本模块,因为它们不依赖于其他模块。从你的评论,我想你可能是倒叙树。基于您关于a是入口点的评论,我相信您想要的树如下所示:

代码语言:javascript
复制
test_mod__a
└─ test_mod__b
|  ├─ test_mod__c
└─ └─ test_mod__d

下面是描述这棵树的标志:

代码语言:javascript
复制
--module_output_path_prefix .\
--js lib\test\mod-a.js --module test_mod__a:1
--js lib\test\mod-b.js --module test_mod__b:1:test_mod__a
--js lib\test\mod-c.js --module test_mod__c:1:test_mod__b
--js lib\test\mod-d.js --module test_mod__d:1:test_mod__a,test_mod__b

此外,您可能需要使用编译器的官方npm版本 -它现在包括一个咕噜插件,并支持--module标志。

免责声明:我管理npm的闭包编译器的发布,并且是插件作者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35012421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档