java -jar SoyToJsSrcCompiler.jar --shouldGenerateJsdoc --outputPathFormat
simple.js --srcs simple.soy
SoyToJsSrcCompiler生成一个js文件,如下所示:
if (typeof templates == 'undefined') { var templates = {}; }
if (typeof templates.simple == 'undefined') { templates.simple = {}; }
/**
* @param {Object.<string, *>=} opt_data
* @param {(null|undefined)=} opt_ignored
* @return {string}
* @notypecheck
*/
templates.simple.tinyButton = function(opt_data, opt_ignored) {
.....
};
我正在使用Closure Compiler --warning_level=VERBOSE
和--compilation_level ADVANCED_OPTIMIZATIONS
我收到了这个警告:
simple.js:1: WARNING - Variable referenced before declaration: templates
if (typeof templates == 'undefined') { var templates = {}; }
如何清除此警告?
答案 0 :(得分:6)
一种解决方法是使用以下命令在外部文件中声明变量:
/** @suppress {duplicate} */
var template;
但是应该修复Soy编译器。我希望人们不会看到这个,因为你通常将它与Closure Library一起使用,并且在那种模式下,Soy编译器应该生成:
goog.provide('template.simple')
答案 1 :(得分:1)
如果您使用带有Soy的Closure编译器,则应该传递--shouldProvideRequireJsFunctions
或--shouldProvideRequireJsFunctions
。否则,它假定您不会使用编译器并生成浏览器理解的代码,但在其他情况下也是如此。
(来源:我帮助维护Soy编译器。我们通常从不测试它们编译器而没有传递任何这些标志。可能有必要使这些标志中至少有一个是强制性的,因为没有它们它们确实不能正常工作。 )