【问题标题】:ExtJS 5.1 Build Error (Yui Parse Error)ExtJS 5.1 构建错误(Yui 解析错误)
【发布时间】:2015-01-02 08:52:28
【问题描述】:

我使用 eclipse 进行 ExtJS 开发, 我在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

【问题讨论】:

    标签: extjs extjs5 sencha-cmd sencha-cmd5


    【解决方案1】:

    我会冒险提出建议,因为您在属性名称中使用了reserved word。虽然它通常是 "okay" 在 javascript 中并且您的 ExtJS 应用程序在开发模式下运行,但我发现在缩小这些关键字时 YUI 阻塞。

    最简单的(并且可能是可取的) 选项只是避免保留关键字并将 abstract 命名为其他名称,例如 abstractObj。如果你想强制解决这个问题,你可以代替这个:

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

    ...尝试数组访问表示法:

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

    ...或者在错误消息中if 语句的特定情况下,in 运算符:

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

    在这些情况下 (以及您可能拥有的任何其他情况) 使用 关键字作为字符串 访问属性似乎满足编译器 - 尽管它违反了约定并且没有看起来很整洁,所以可以说不值得......

    【讨论】:

    • 是的,我将文件夹名称更改为 prAbstract,并更改更新我的代码中使用我的抽象类的所有行,而不是解决问题。谢谢
    • 我遇到了几乎完全相同的问题,类名为case
    【解决方案2】:

    您的 JavaScript 中有语法错误;当它被合并到一个文件中时,YUI 压缩器无法处理它和 barfs。

    不幸的是,ExtJS 没有很好的工具来发现单个文件中的错误。您可以尝试不同的工具(例如,我使用 jshint 作为预构建 Ant 任务),或者您可以简单地查看自上次成功构建以来发生更改的文件并以此方式缩小范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 2019-01-20
      相关资源
      最近更新 更多