用KJSCompiler(https://github.com/knyga/kjscompiler)编译JavaScript源之后,我得到了这个奇怪的函数,包裹在我的代码中。如果尝试将其包含在实时源代码中,则会在控制台中出现此错误“未捕获的ReferenceError:JSCOMPILER_PRESERVE未定义”。
我以为发生此问题是因为我没有在kjscompiler的JSON文件中添加“包装器”。经过尝试,它仍然会发生。
有谁知道如何解决这个问题?
最佳答案
直接通过Java API使用Closure Compiler时遇到了这个问题。
这似乎是由于在仅检查模式下运行了编译器但启用了保护隐藏副作用引起的。在“仅检查”模式下,跳过了消除对隐藏副作用的保护的后期操作。
我不确定具体关于KJSCompiler的信息,但可能有助于查看将编译级别更改为SIMPLE或ADVANCED,和/或如何控制对KJSCompiler进行的检查和优化,例如关闭 CompilerOptions.protectHiddenSideEffects
。
参见https://github.com/google/closure-compiler/issues/1875