在用KJSCompiler (https://github.com/knyga/kjscompiler)编译了我的KJSCompiler源代码之后,我得到了这个封装在代码中的奇怪函数。如果我试图将它包含在我的实时源代码中,我就会在控制台“未定义ReferenceError: JSCOMPILER_PRESERVE”中得到这个错误。
我认为出现这个问题是因为我没有在kjs编译器的JSON文件中添加“包装器”。在尝试之后,它仍然会发生。
有谁知道怎么解决这个问题吗?
发布于 2016-07-07 10:04:17
我在直接通过Java使用闭包编译器时遇到了这种情况。
这似乎是由于在只检查模式下运行编译器而导致的,但是启用了保护隐藏的副作用。移除隐藏副作用的保护的延迟传递在检查模式中被跳过。
我不太清楚KJSCompiler的具体情况,但它可能有助于查看如何将编译级别更改为简单或高级,以及/或如何控制哪些检查和优化运行到KJSCompiler,例如关闭CompilerOptions.protectHiddenSideEffects。
发布于 2018-09-17 11:03:08
除了Steve的回答:在设置优化级别之后,将protectHiddenSideEffects设置为options.setProtectHiddenSideEffects(false);如果在设置CompilationLevel之前设置它,则对GCC版本v20180204不起作用。
CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(compilerOptions);
//To remove JSCOMPILER_PRESERVE error: https://github.com/google/closure-compiler/issues/1875
compilerOptions.setProtectHiddenSideEffects(false);https://stackoverflow.com/questions/26665571
复制相似问题