我使用
eclipse进行ExtJS开发,
我在eclipse中使用ant build,它使用Sencha cmd.
我的项目详情是
我在eclipse中使用ant build,它使用Sencha cmd.
我的项目详情是
app.framework.version = 5.1.0.107
app.cmd.version = 5.1.0.26
当我尝试构建项目时,它因Yui Parse错误而失败,但我在工作区中找不到任何错误.
你能解释堆栈跟踪消息吗?
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
解决方法
我打算走出去,建议这是因为你在你的房产名称中使用了
reserved word.虽然它在javascript中通常是“好的”并且你的ExtJS应用程序在开发模式下运行,但我发现在缩小这些关键字的YUI扼流圈时.
最简单(也可能是可取的)选项只是为了避免保留关键字和名称抽象其他东西,例如abstractObj.如果你想强制解决问题,你可以改为:
if(!Propca.view.abstract) // ...
…尝试数组访问表示法:
if(!Propca.view['abstract']) // ...
…或者在错误消息中的if语句的特定情况下,in运算符:
if(!('abstract' in Propca.view)) // ...
在这些情况下(以及您可能拥有的任何其他情况)使用关键字作为字符串访问该属性似乎满足编译器 – 虽然它违反了约定并且看起来不是很整洁所以可能不值得…