【问题标题】:Ext.ux app build vs app watch (ExtJS 6.2.0 GPL)Ext.ux 应用程序构建与应用程序监视(ExtJS 6.2.0 GPL)
【发布时间】:2017-11-09 19:05:38
【问题描述】:

我有一个问题我无法解决,无论书籍和谷歌如何 - 但我认为对于比我更熟练的人来说答案非常简单:-)

使用 CMD 6.5.2 和 ExtJS 6.2.0 GPL

我正在尝试构建一个桌面应用程序,使用示例桌面作为起点。

我可以让我的桌面正常运行、修改它、显示我的数据 - 只要我使用“sencha app watch classic”。

我在 app.json 的需求列表中加入了“ux”,并且还在 Application.js 中使用了 extend: 'Ext.ux.desktop.App'

所以运行“sencha app watch classic”会显示我的桌面,但运行“sencha app build classic production”,然后将 build/production/Desktop/ 中的文件移动到我的 Web 服务器根本不起作用。

我在 Chrome 控制台中收到类似这样的错误:GET http://localhost/desktop/.js 404 (Not Found) (index) : 72

所以脚本正在尝试加载一个空名称的 js 文件,这对我来说很难探索,更详细的错误会很好:-)

有人知道发生了什么吗?!

//乔纳斯

【问题讨论】:

    标签: extjs6


    【解决方案1】:

    当您在浏览器中(通过本地网络服务器)打开应用程序的未编译版本时,您可能会在浏览器控制台中看到以下一个或多个警告:

    [W] [Ext.Loader] 同步加载'MyApp.view.Test';考虑在 Ext.onReady 上方添加 Ext.require('MyApp.view.Test')

    这意味着您在某处引用了MyApp.view.Test,但应用程序不知道它是必需的,因此不会预先加载它 - 也不会将其编译到构建版本中。

    【讨论】:

    • 谢谢,这在我的路上帮助了我——尽管我从来没有从 sencha cmd 得到这么好的建议 :-) 我的问题的完整答案是 1. Sencha app watch and the dev build add需求是动态的,生产不是。这就是为什么我的应用程序在监视上下文中运行良好的原因 2。我得到的错误因构建而异,但是运行测试然后在浏览器开发控制台中查看错误消息,而不是在构建过程中(sencha app build-messages)消息有帮助我在路上。 3.最后,添加需求“Ext.layout.container.boxOverflow.Menu”解决了它。为什么?! :-)
    • @JonasMalm ExtJS 没有动态要求;开发人员必须根据需要添加所需的类,并且文档没有告诉您这样做。当您将overflowHandler: 'menu' 添加到工具栏时,适当的 ExtJS 工厂 (Ext.Factory.boxOverflow) 所做的是尝试实例化在Ext.layout.container.boxOverflow.Menu 中定义的适当类型。该类型不可用,因为 ExtJS 在 Toolbar 的固定 requires 列表中没有它(这有点道理,因为 >90% 的应用程序不使用它,所以没有必要将它添加到每个项目中)。
    【解决方案2】:

    您缺少 extjs 类的一些“要求”。 您可以通过运行使用测试环境构建的应用程序来找到它们,您应该会在控制台中看到一些有用的警告,说明您错过了需要的类。

    【讨论】:

    • 感谢您的回复,但是运行“sencha app build classic testing”没有任何错误,一些来自 extjs-internals 的警告,即使用 @import 而不是 requires() 等...
    • 我现在意识到,控制台是指浏览器开发控制台,而不是我运行 sencha cmd 的终端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多