Не могу минимизировать с Combres и Юи
Я не уверен, как узнать больше о том, что не так с моим файлом.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 ответа
"Отсутствует формальный параметр" означает, что в определении функции отсутствует параметр. Например
/**
* @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 для согласованности.
Эта ошибка также может появляться при использовании таких параметров:
function functionName( markers, boolean )
В этом случае boolean
вызовет ошибку.
У меня была та же самая проблема вчера (которая оказалась 'длинной', использовала параметр - я просто переименовал в долготу) - и лучший подход для меня состоял в том, чтобы вручную передать JS этим двум инструментам: http://www.javascriptlint.com/online_lint.php и онлайн-компрессор YUI http://refresh-sf.com/yui/
между ними было легко найти ошибки и убедиться, что они сжимаются.