我在本地计算机上运行Closure Compiler来生成客户端文件。我还在http://closure-compiler.appspot.com/home使用在线关闭工具检查我的工作:我粘贴我的javascript代码,按下编译,如果有警告,编译器会向我显示实际线条和线条的警告数字。我想知道是否可以使用Closure Compiler的本地版本获得相同的输出。这是我用来编译文件并获取编译的javascript的代码,但这一次,我想要警告:
System.IO.File.WriteAllText(FileNameInput, TheJS);
string JavaArgument = "-jar ClosureCompiler/compiler.jar --js ClosureCompiler/initial" + FileNameSuffix + ".js --js_output_file ClosureCompiler/compiled" + FileNameSuffix + ".js --compilation_level ADVANCED_OPTIMIZATIONS --externs ExternalFiles/JqueryExtern.js";
System.Diagnostics.Process clientProcess = new System.Diagnostics.Process();
clientProcess.StartInfo.FileName = "java.exe";
clientProcess.StartInfo.Arguments = JavaArgument;
clientProcess.StartInfo.CreateNoWindow = true;
clientProcess.StartInfo.UseShellExecute = false;
clientProcess.StartInfo.WorkingDirectory = HttpRuntime.AppDomainAppPath;
clientProcess.Start();
clientProcess.WaitForExit();
string TheOutputScript = System.IO.File.ReadAllText(FileNameOutput);
我需要改变什么?
感谢。
答案 0 :(得分:1)
编译器将警告和错误写入标准错误,该错误不会显示在输出文件中。
将2> errorfile.txt
添加到执行命令的末尾,以将标准错误重定向到文件。然后,您需要阅读该文件。
这应该简单如下:
clientProcess.StandardError
答案 1 :(得分:0)
乍得的答案很棒,因为我指的是代码。对于那些需要实际代码的人来说,这就是我所拥有的:
clientProcess.StartInfo.FileName = "java.exe";
clientProcess.StartInfo.Arguments = JavaArgument;
clientProcess.StartInfo.CreateNoWindow = true;
clientProcess.StartInfo.UseShellExecute = false;
clientProcess.StartInfo.WorkingDirectory = HttpRuntime.AppDomainAppPath;
clientProcess.StartInfo.RedirectStandardError = true; //add this line
clientProcess.Start();
string CompilerErrors = clientProcess.StandardError.ReadToEnd(); //add this line
clientProcess.WaitForExit();
return System.IO.File.ReadAllText(FileNameOutput); //add breakpoint here
现在你所要做的就是在最后添加一个断点并观察变量CompilerErrors。