闭包编译器:变量定义未声明

Closure compiler: variable define is undeclared

我正在尝试使用 Google 的闭包编译器的最新版本编写压缩 JavaScript 文件的 Coldfusion 脚本。 该程序以两个错误结束:

JSC_UNDEFINED_VARIABLE. variable module is undeclared at jquery-3.1.1.js line 9767 : 12
JSC_UNDEFINED_VARIABLE. variable define is undeclared at jquery-3.1.1.js line 9784 : 13

我想知道有什么魔力。 moduledefine是普通的JS变量;我相信 Closure 了解他们。我缺少什么设置?是否缺少外部人员?我必须设置某个 CompilerOption 吗?

<cfset options = createObject( "java", "com.google.javascript.jscomp.CompilerOptions" ).init()>
<cfset cl = createObject( "java", "com.google.javascript.jscomp.CompilationLevel" )>
<cfset wl = createObject( "java", "com.google.javascript.jscomp.WarningLevel" )>
<cfset cl.SIMPLE_OPTIMIZATIONS.setOptionsForCompilationLevel(options)>
<cfset cl.SIMPLE_OPTIMIZATIONS.setDebugOptionsForCompilationLevel(options)>
<cfset lm = createobject( "java", "com.google.javascript.jscomp.CompilerOptions$LanguageMode" )>

<cfset options.setEnvironment(options.Environment.BROWSER)>

<cfset schar = createobject( "java", "java.nio.charset.StandardCharsets")>
<cfset options.setOutputCharset( schar.UTF_8 )>

<cfset wl.VERBOSE.setOptionsForWarningLevel(options)>

<cfset comp = createObject( "java", "com.google.javascript.jscomp.Compiler" ).init()>
<cfset clr = createObject( "java", "com.google.javascript.jscomp.CommandLineRunner" )>
<cfset sourceFile = createObject( "java", "com.google.javascript.jscomp.SourceFile" )>

<cfset arrInputs = createObject( "java", "java.util.ArrayList" ).init()>
<cfset arrExterns = createObject( "java", "java.util.ArrayList" ).init()>

<cfset arrInputs.add(
    sourceFile.fromCode(
        javaCast( "string", "jquery-3.1.1.js" ),
        javaCast( "string", fileRead( expandPath( "../advanced/js/jquery-3.1.1.js" ), "utf-8" ) )
    )
)>

<cfset arrExterns.addAll( clr.getBuiltinExterns(options.Environment) )>

<cfset result = comp.compile( arrExterns, arrInputs , options )>

<cfoutput>
    |#result.success#|

    <cfloop from="1" to="#arrayLen( result.errors )#" index="i">
        err: #result.errors[i]#<br>
    </cfloop>
</cfoutput>

module and define are common JS variables

module 通常是 CommonJS 模块系统的一个指标。 define 由 AMD 模块系统使用。既不是默认的 JS 变量,也不是浏览器已知的。

jQuery 正在使用通用模块定义模式将 jQuery 对象导出为模块(CommonJS 或 AMD,视情况而定),或者如果找到 none,则作为全局变量。当指定 --process_common_js_modules 标志时,闭包编译器可以识别此模式并删除模块特定部分。