2015-01-02 9 views
6

Ich benutze Eclipse für ExtJS Entwicklung, Ich benutze Ant Build in Eclipse, es verwendet Sencha cmd. Meine Projektdetails sindExtJS 5.1 Build Fehler (Yui Parse Error)

app.framework.version = 5.1.0.107

app.cmd.version = 5.1.0.26

, wenn ich versuche Projekt zu erstellen, ist es nicht mit Fehlern Yui Parse, aber Ich konnte keinen Fehler in meinem Arbeitsbereich finden. Können Sie die Stack-Trace-Nachricht erklären?

page: 
-before-page: 
-init: 
-init-compiler: 
-copy-app-resources: 
[x-compile] Copying page resources to D:\Users\admin\workspaceKepler\Propca\WebContent\build\production\Propca 
[x-compile] C2009: YUI Parse Error (missing name after . operator => if (!Propca.view.abstract) Propca.view.abstract = {};) -- unknown-file:143:26 
[x-compile] C2009: YUI Parse Error (missing name after . operator =>  Propca.view.abstract,) -- unknown-file:197633:25 
[x-compile] C2009: YUI Parse Error (syntax error => ], 0));) -- unknown-file:197635:1 
[x-compile] C2009: YUI Parse Error (missing name after . operator =>  Propca.view.abstract,) -- unknown-file:197657:25 
[x-compile] C2009: YUI Parse Error (syntax error => ], 0));) -- unknown-file:197659:1 
[x-compile] C2009: YUI Parse Error (missing name after . operator => (Ext.cmd.derive('Propca.view.querybuilder.QueryBuilder', Propca.view.abstract.PRPanel, {) -- unknown-file:197661:78 
[x-compile] C2009: YUI Parse Error (syntax error =>   items: [) -- unknown-file:197679:15 
[x-compile] C2009: YUI Parse Error (missing ; before statement =>     itemId: 'idbtnValidateSqlScript',) -- unknown-file:197682:24 
[x-compile] C2009: YUI Parse Error (syntax error =>     bodypadding: '30',) -- unknown-file:197683:29 
[x-compile] C2009: YUI Parse Error (syntax error =>     height: 30,) -- unknown-file:197684:24 
[x-compile] InvocationTargetException: java.lang.reflect.InvocationTargetException 

BUILD FAILED 
com.sencha.exceptions.ExBuild: Failed to compress input 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.runYuiCompressor(YuiJavascriptCompressor.java:85) 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.compress(YuiJavascriptCompressor.java:96) 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.compress(YuiJavascriptCompressor.java:106) 
    at com.sencha.tools.page.PageModelBuilder.compressAsset(PageModelBuilder.java:413) 
    at com.sencha.tools.page.PageModelBuilder.copyResourcesToOutputDirectory(PageModelBuilder.java:398) 
    at com.sencha.command.compile.app.AppResourcesCommand.execute(AppResourcesCommand.java:61) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sencha.util.MethodInvoker$Arguments.invoke(MethodInvoker.java:175) 
    at com.sencha.cli.Command.dispatch(Command.java:43) 
    at com.sencha.cli.Commands.dispatch(Commands.java:64) 
    at com.sencha.command.compile.CompileCommands.dispatch(CompileCommands.java:308) 
    at com.sencha.cli.AbstractCommand.dispatch(AbstractCommand.java:124) 
    at com.sencha.ant.CompileTask$CompileToken.dispatchCommand(CompileTask.java:164) 
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) 
    at org.eclipse.ant.internal.launching.remote.EclipseSingleCheckExecutor.executeTargets(EclipseSingleCheckExecutor.java:30) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424) 
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138) 
Caused by: com.sencha.exceptions.ExReflect: java.lang.reflect.InvocationTargetException 
    at com.sencha.util.ReflectionUtil.newInstance(ReflectionUtil.java:116) 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.runYuiCompressor(YuiJavascriptCompressor.java:58) 
    ... 48 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.sencha.util.ReflectionUtil.newInstance(ReflectionUtil.java:114) 
    ... 49 more 
Caused by: org.mozilla.javascript.EvaluatorException: Compilation produced 379 syntax errors. 
    at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sencha.tools.compressors.yui.BaseYuiCompressor$1.invoke(BaseYuiCompressor.java:135) 
    at com.sun.proxy.$Proxy9.runtimeError(Unknown Source) 
    at org.mozilla.javascript.Parser.parse(Parser.java:392) 
    at org.mozilla.javascript.Parser.parse(Parser.java:337) 
    at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312) 
    at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533) 
    ... 54 more 

Total time: 1 minute 15 seconds 

Antwort

12

Ich werde auf ein Bein gehen und vorschlagen, dass es ist, weil Sie eine reserved word in Ihrem Namen verwenden. Während es in der Regel "okay" in Javascript ist und Ihre ExtJS-Anwendung im Entwicklungsmodus ausgeführt wird, habe ich festgestellt, wenn YUI Drosseln auf diese Schlüsselwörter minimiert.

Die einfachste (und wahrscheinlich ratsam) Option ist nur reservierte Schlüsselwörter und Namen abstrakt etwas anderes abstractObj zum Beispiel zu vermeiden. Wenn Sie das Problem erzwingen wollen, können Sie statt dessen:

if(!Propca.view.abstract) // ... 

... versuchen Array-Zugriffs Notation:

if(!Propca.view['abstract']) // ... 

... oder im speziellen Fall der if Aussage in der Fehlermeldung, die in Betreiber:

if(!('abstract' in Propca.view)) // ... 

In diesen Fällen (und alle anderen, die Sie möglicherweise haben) die prope Zugriff Mit dem Schlüsselwort als String scheint der Compiler zufrieden zu sein - obwohl es Konvention bricht und nicht sehr ordentlich aussieht, also wohl nicht wert ...

+0

Ja, ich habe den Ordnernamen in prAbstract geändert und Update geändert alle Zeilen in meinem Code, die meine abstrakten Klassen verwenden, als Problem behoben. Danke – AsyncTask

+0

Ich hatte fast genau das gleiche Problem mit einem Klassennamen von 'case' – weeksdev

3

Sie haben einen Syntaxfehler in Ihrem JavaScript; Wenn dies in einer einzigen Datei kombiniert wird, kann der YUI-Kompressor nicht damit umgehen und Barfs.

Leider hat ExtJS keine guten Werkzeuge, um Fehler in einzelnen Dateien zu erkennen. Sie könnten ein anderes Tool ausprobieren (ich benutze zum Beispiel jshint als vorbereitende Ant-Aufgabe), oder Sie könnten einfach die Dateien anschauen, die sich seit der letzten erfolgreichen Erstellung geändert haben und diese auf diese Weise eingrenzen.