我有一个多页面应用程序,我已经从EXT JS 6(单页面应用程序)迁移到工作空间(ext JS 6)。
我已经拆分了一些常见的部分,比如我的应用程序标题和一些自定义输入组件。这些我已经放入一个包中(因为它们在我的工作空间中被多个'应用程序'访问。
我的问题是我有一个页面(工作空间应用程序)运行正常,找到它需要的所有文件并继续正常。
另一个页面(相同的工作空间,单独的应用程序)不起作用,它正在寻找404正在寻找文件(404-ing因为它在错误的目录中查找)
APP.JSON 我已经浏览了app.json文件并准确地告诉了它要使用的包。它在两种应用中都是相同的。
类路径 我没有触及任何一个应用程序的ClassPath。所以他们仍然是彼此相同的。
App 1(第1页)转到以下地址查找我的包裹中的文件:
http://localhost/App2/store/file.js
App 2(第2页)转到:
查找同一文件sencha app refresh
sencha app build
我已经运行了sencha cmd并且没有任何错误
C:\Development\workspaces\e\e\app1>sencha app explain "testapp.store.Locale"
Sencha Cmd v6.2.0.46
[INF] Loading app json manifest...
[INF] Loading classes...
[INF] Gathering dependencies...
"edited"\sencha-compiler\app\full-page-master-bundle.js
(@require file.js)
--> e\app1\app.js
e\app1\app.js:6 (Ext.require)
(config)
--> packages\local\page\src\store\Locale.js
C:\Development\workspaces\e\e\app2>sencha app explain "testapp.store.Locale"
Sencha Cmd v6.2.0.46
[INF] Loading app json manifest...
[INF] Loading classes...
[INF] Gathering dependencies...
"edited"\sencha-compiler\app\full-page-master-bundle.js
(@require file.js)
--> e\app2\app.js
e\app2\app.js:6 (Ext.require)
(config)
--> packages\local\page\src\store\Locale.js
我能想到的一切应该在这里有所作为,已经检查并重新检查;
所以提问时间: - Sencha Cmd为什么/如何测试文件是否存在于特定位置? - 在这种情况下为什么会出错呢? - 我可能缺少哪些配置选项和问题?
编辑:
我刚刚找到并运行以下内容:
--compression-codec
看起来它告诉我App2在配置中有正确的路径......(感觉就像我发现了一个错误)
答案 0 :(得分:2)
听起来像是在使用Ext.Loader配置遇到问题。从评论中,您似乎在包和测试应用程序中使用相同的根命名空间。问题是Ext.Loader会将命名空间映射到文件位置。得到错误的映射,你会看错了地方。
最简单的答案是确保包和应用程序在命名空间方面有所不同。这可能意味着更改前缀(例如MyPackage
与MyApp
),或具有多级命名空间(MyStuff.package
vs MyStuff.app
)。后者是ExtJS本身的组织方式。
要查看的一个地方是应用的生成classic.json
。此文件由引导过程使用,它包含它找到的所有类的列表,以及该类相对于应用程序所在的位置。 (我建议先做一些漂亮的打印格式化,因为它只是一行)。检查它是否有你正在寻找的班级名称,以及路径是什么。
...
"classes": {
...
"Ext.Ajax": {
"alias": [],
"alternates": [],
"idx": 43
},
...
},
...
"loadOrder": {
....
{
"idx": 43,
"path": "../ext-6.2.0/packages/core/src/Ajax.js",
"requires": [
42
],
"uses": []
},
....
},
...
"paths": {
"Ext": "../ext-6.2.0/classic/classic/src",
....
"Ext.Ajax": "../ext-6.2.0/packages/core/src/Ajax.js",
...
},
...
paths
部分是关键部分。在上文中,了解命名空间(Ext
)和文件(Ext.Ajax
)的另一个命令。如果应用程序代码想要加载对paths
部分中的类而不是的引用,它会在类命名空间中找到最长匹配并查找该目录。