不能用Combres和yui缩小

时间:2011-11-14 13:25:47

标签: javascript minify combres

我不知道如何找到更多关于我的.js文件错误的信息,但如果我转过" defaultDebugEnaled = true"然后它工作正常,但把它弄错会让我得到这个错误

而我似乎无法切换任何内容以使其给我一个更具体的错误,我只知道在尝试缩小它时它会失败。

此外,只有当我包含某个特定文件时才会发生这种情况,但这是有效的,所以不能发布该文件。

 Server Error in '/' Application.

 [ERROR] missing formal parameter

 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.InvalidOperationException: [ERROR] missing formal parameter

 Source Error: 

 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

 Stack Trace: 


 [InvalidOperationException: [ERROR] missing formal parameter]
   Yahoo.Yui.Compressor.CustomErrorReporter.Error(String message, String sourceName, Int32 line, String lineSource, Int32 lineOffset) +61
   EcmaScript.NET.Parser.AddError(String messageId) +94
   EcmaScript.NET.Parser.ReportError(String messageId) +9
   EcmaScript.NET.Parser.function(Int32 functionType) +700
   EcmaScript.NET.Parser.parseFunctionBody() +138
   EcmaScript.NET.Parser.function(Int32 functionType) +932
   EcmaScript.NET.Parser.primaryExpr() +334
   EcmaScript.NET.Parser.memberExpr(Boolean allowCallSyntax) +213
   EcmaScript.NET.Parser.unaryExpr() +605
   EcmaScript.NET.Parser.mulExpr() +16
   EcmaScript.NET.Parser.addExpr() +16
   EcmaScript.NET.Parser.shiftExpr() +16
   EcmaScript.NET.Parser.relExpr(Boolean inForInit) +21
   EcmaScript.NET.Parser.eqExpr(Boolean inForInit) +25
   EcmaScript.NET.Parser.bitAndExpr(Boolean inForInit) +23
   EcmaScript.NET.Parser.bitXorExpr(Boolean inForInit) +23
   EcmaScript.NET.Parser.bitOrExpr(Boolean inForInit) +23
   EcmaScript.NET.Parser.andExpr(Boolean inForInit) +26
   EcmaScript.NET.Parser.orExpr(Boolean inForInit) +26
   EcmaScript.NET.Parser.condExpr(Boolean inForInit) +26
   EcmaScript.NET.Parser.assignExpr(Boolean inForInit) +28
   EcmaScript.NET.Parser.expr(Boolean inForInit) +23
   EcmaScript.NET.Parser.primaryExpr() +1233
   EcmaScript.NET.Parser.memberExpr(Boolean allowCallSyntax) +213
   EcmaScript.NET.Parser.unaryExpr() +605
   EcmaScript.NET.Parser.mulExpr() +16
   EcmaScript.NET.Parser.addExpr() +16
   EcmaScript.NET.Parser.shiftExpr() +16
   EcmaScript.NET.Parser.relExpr(Boolean inForInit) +21
   EcmaScript.NET.Parser.eqExpr(Boolean inForInit) +25
   EcmaScript.NET.Parser.bitAndExpr(Boolean inForInit) +23
   EcmaScript.NET.Parser.bitXorExpr(Boolean inForInit) +23
   EcmaScript.NET.Parser.bitOrExpr(Boolean inForInit) +23
   EcmaScript.NET.Parser.andExpr(Boolean inForInit) +26
   EcmaScript.NET.Parser.orExpr(Boolean inForInit) +26
   EcmaScript.NET.Parser.condExpr(Boolean inForInit) +26
   EcmaScript.NET.Parser.assignExpr(Boolean inForInit) +28
   EcmaScript.NET.Parser.expr(Boolean inForInit) +23
   EcmaScript.NET.Parser.statementHelper(Node statementLabel) +9649
   EcmaScript.NET.Parser.statement() +71
   EcmaScript.NET.Parser.Parse() +333
   EcmaScript.NET.Parser.Parse(StreamReader sourceReader, String sourceURI, Int32 lineno) +64
   Yahoo.Yui.Compressor.JavaScriptCompressor.Parse(StreamReader stream, ErrorReporter reporter) +71
   Yahoo.Yui.Compressor.JavaScriptCompressor..ctor(String javaScript, Boolean isVerboseLogging, Encoding encoding, CultureInfo threadCulture, Boolean isEvalIgnored, ErrorReporter errorReporter) +391
   Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition, Encoding encoding, CultureInfo threadCulture, Boolean isEvalIgnored) +73
   Combres.Minifiers.YuiJSMinifier.Minify(Settings settings, ResourceSet resourceSet, String combinedContent) +355
   Combres.RequestProcessor.MinifyContent(MinifierInfo minifierInfo, IEnumerable`1 resources, String combinedContent) +340
   Combres.DefaultProcessingWorkflow.ProcessMergeGroup(ICollection`1 minifiedContents, IEnumerable`1 mergeGroup, MinifierInfo currentMinifier) +63
   Combres.DefaultProcessingWorkflow.Execute() +344
   Combres.RequestProcessor.Execute() +160
   Combres.CombresHandler.ProcessRequest(HttpContext context) +94
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

3 个答案:

答案 0 :(得分:6)

“缺少形式参数”表示函数定义缺少参数。例如

/**
 * @param x ...
 * @param y ...
 */
function f(x) {  // Only one formal parameter.
  ...
}

f(1, 2);  // Called with 2 actual parameters.

函数f缺少形式参数y

编辑:

https://github.com/wycats/handlebars.js/issues/93讨论了一个类似的问题,并提出问题是YUI压缩器将某些JS标识符(错误地)视为保留字,并在保留字用作形式参数时发出此错误

$ java -jar lib/closurecompiler.jar --js js/handlebars.1.0.0.beta.3.js 
js/handlebars.1.0.0.beta.3.js:667: ERROR - Parse error. missing formal parameter
Handlebars.AST.BooleanNode = function(boolean) {
     

我有一个似乎在我的分支中工作的版本。主要的变化是用s / boolean / bool / g删除保留字   还要输入.js文件以保持一致性。

答案 1 :(得分:2)

使用这样的参数时也会出现此错误:

function functionName( markers, boolean )

在这种情况下,boolean会导致错误。

答案 2 :(得分:1)

昨天我遇到了同样的问题(原来是'长期'使用了一个参数 - 我刚刚重命名为经度) - 对我来说最好的方法是手动将JS提供给这两个工具:{{3}和在线YUI压缩器http://www.javascriptlint.com/online_lint.php

在两者之间很容易找到错误并验证它是否会压缩。