闭包编译器:变量定义未声明
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
我想知道有什么魔力。 module
和define
是普通的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
标志时,闭包编译器可以识别此模式并删除模块特定部分。
我正在尝试使用 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
我想知道有什么魔力。 module
和define
是普通的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
标志时,闭包编译器可以识别此模式并删除模块特定部分。