ExtJS 5.1 build error (Yui Parse error)

I use eclipse to develop ExtJS, I use ant build in eclipse, it uses Sencha cmd. My project information

app.framework.version = 5.1.0.107

app.cmd.version = 5.1.0.26

when I try to build a project, it fails with Yui Parse errors, but I could not find the error in my workspace. Can you explain the stack trace message?

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 
+6
source share
2 answers

I am going to go on a limb and offer it, because you use a reserved word in your name. Although it is usually β€œgood” in javascript, and your ExtJS application is in development mode, I found that the miniature YUI locks are for these keywords.

The simplest (and probably recommended) option is to simply avoid the reserved keywords and name abstract something else, abstractObj , for example. If you want to forcibly fix the problem, you can instead:

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

... try accessing the array:

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

... or in the specific case of the if in the error message, the in statement:

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

In these cases (and any others that you have), accessing the property with a keyword as a string seems to satisfy the compiler - although it violates the convention and does not look very neat, so maybe it’s not worth it ...

+12
source

You have a syntax error in your JavaScript; when it is combined into a single file, the YUI compressor cannot process it and barfs.

Unfortunately, ExtJS does not have good tools for detecting errors in individual files. You can try another tool (I use jshint, for example, as a pre-build Ant task), or you can just look at the files that have changed since the last time you successfully completed the assembly and narrowed it this way.

+3
source

Source: https://habr.com/ru/post/980426/


All Articles