【问题标题】:Can't minify with Combres and yui不能用 Combres 和 yui 缩小
【发布时间】:2011-11-14 13:25:46
【问题描述】:

我不知道如何找到更多关于我的 .js 文件有什么问题的信息,但是如果我打开“defaultDebugEnaled = true”,那么它工作正常,但是将它设置为 false 会让我得到这个错误

而且我似乎无法切换任何东西来让它给我一个更具体的错误,我只知道它在尝试缩小它时会失败。

只有当我包含一个特定文件时才会发生这种情况,但这是工作,所以不能只发布该文件。

 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

【问题讨论】:

    标签: javascript minify combres


    【解决方案1】:

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

    /**
     * @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) {
    

    我有一个似乎可以在我的 fork 中运行的版本。主要变化是用 s/boolean/bool/g 删除保留字 还检查了输入 .js 文件以保持一致性。

    【讨论】:

    • 没有办法让它给我一个更具体的错误(哪一行)我有 400 行
    【解决方案2】:

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

    function functionName( markers, boolean )
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多