Не могу минимизировать с Combres и Юи - PullRequest
2 голосов
/ 14 ноября 2011

Я не уверен, как узнать больше о том, что не так с моим файлом .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

Ответы [ 3 ]

6 голосов
/ 14 ноября 2011

«Отсутствует формальный параметр» означает, что в определении функции отсутствует параметр. Например

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

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

в функции f отсутствует формальный параметр y.

EDIT:

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 для согласованности.

2 голосов
/ 04 сентября 2013

Эта ошибка также может появляться при использовании таких параметров, как:

function functionName( markers, boolean )

В этом случае boolean приведет к ошибке.

1 голос
/ 25 января 2013

Вчера у меня была та же проблема (которая оказалась 'длинной', использовала параметр - я просто переименовал в долготу) - и лучший подход для меня заключался в том, чтобы вручную передать JS этим двум инструментам: http://www.javascriptlint.com/online_lint.php и онлайновый компрессор YUI http://refresh -sf.com / yui /

между ними было легко найти ошибки и убедиться, что они будут сжиматься.

...