Extjs Sencha CMD:404运行生成的生产版本时出错

Extjs Sencha CMD:404运行生成的生产版本时出错,extjs,extjs4,sencha-cmd,Extjs,Extjs4,Sencha Cmd,我已将现有的ExtJS 4.1.3应用程序转换为使用Sencha CMD推荐的结构和工具。我首先创建了这个结构,然后将我现有的应用程序JS文件放在单页JS应用程序应该位于的位置 我目前访问我的应用程序的开发版本,网址为: {my-server-side-app-url}/sws/dt/index.jsp 其中,sws是,而dt是。到目前为止,我相信没有问题。然后我运行命令: sencha app build 在我的应用程序的目录中。这通过几个Yui压缩程序警告完成(在ECMA-262对象初始

我已将现有的ExtJS 4.1.3应用程序转换为使用Sencha CMD推荐的结构和工具。我首先创建了这个结构,然后将我现有的应用程序JS文件放在单页JS应用程序应该位于的位置

我目前访问我的应用程序的开发版本,网址为:

{my-server-side-app-url}/sws/dt/index.jsp
其中,
sws
是,而
dt
是。到目前为止,我相信没有问题。然后我运行命令:

sencha app build
在我的
应用程序的目录中。这通过几个
Yui压缩程序警告完成(在ECMA-262对象初始值设定项中,尾随逗号不合法,但没有错误。因此,我在URL处打开了生产
index.jsp
页面(该页面使用
all class.js
文件,该文件接收上述
app build
命令的串联输出):

all classes.js
尝试加载理论上应该包含在其自身中的多个文件时,就会出现此问题。这些文件包括app.js中指定的控制器

为什么这些文件没有被连接到
all classes.js
?下面是Chrome试图从
all classes.js
加载它们的屏幕截图,当然没有找到它们

我试了什么?
尝试调整my
app.js
以要求控制器通过;或按照此建议通过使所需的类可用,但无效。

尝试将所需的所有类包含在
app.js的内部或部分中

请注意,如果控制器需要一些视图,您可以在
app.js
的require部分中忽略该视图,因为在sencha工具解析控制器时,它将被包括在内

将文件添加到
uses
/
requires
部分
app.js
时,请尝试使用完整路径。也就是说,编写
MyApp.controller.pages.Home
MyApp.store.users.List
,但现在是
pages.Home
users.List

您可以在sencha工具的YUI最小化阶段开始之前,使用
-before build
-after build
Ant目标修改app.js。
在我的例子中,我最终搜索了
app/controller
文件夹中的所有控制器,并将它们的名称添加到
app.js
uses
部分。这就足够了,因为我的控制器中需要其他需要的类

为了能够找到app.js的uses部分,我使用了特别的注释

/*ant-generated-content-start*/ /*ant-generated-content-end*/
我的
app.js

Ext.application({
名称:“MyApp”,
appFolder:'应用',
控制器:[
“main.App”
],
用途:[
/*ant生成的内容开始*/*ant生成的内容结束*/
],
autoCreateViewport:true,
});
我的
build.xml


我仍然不完全理解这个问题,但这就是我为解决这个问题所做的

我有两个模型;
App.js
Window.js
,它们分别具有
多个
属于
关系。在
App.js
中:

associations: [{
    type : 'hasMany',
    model: 'WD.model.Window',
    name : 'windows'
}]
Window.js
中,我有:

associations: [{
    type : 'belongsTo',
    model: 'WD.model.App',
    associationKey: 'appId'
}]
我开始怀疑这些部分是导致问题的原因,因为它们是唯一给出
404
的ExtJS模块;给出
404
的其他模块依赖于使用
的模型文件,这些文件有许多
以下的

我只是删除了上面粘贴的
关联
片段(因为现在我没有使用它们,因为它们不起作用,因为我仍然需要自己加载数据,而不是自动加载子数据)。然后重新运行
sencha app build
,生产版本正常工作

如果任何人(特别是来自Sencha的人)确切地知道我的笨拙修复的原因,请回答下面的问题或评论,我将更新答案

谢谢你的回答,它仍然为这个问题提供了有用的见解;+1ed。

我也有同样的问题,,
为了解决这个问题,我只需更改类的名称。我使用SenchaCmd 3.1.xx和Sencha Touch 2.2构建了一些奇怪的东西…我使用相同的结构,我使用了
Sencha generate app
来生成我的应用程序,它对我有效…在你的情况下,只有你的自定义类不加载?@bhovhannes有一些控制器和一些客户om类,除了名为
belongsto.js
的文件之外,还有许多被我自己的模型类引用的.js
;事实上,只有这些模型类
App
Window
没有加载。我将尝试使用它们,但真的不明白为什么我认为dev没有问题,在生产时它根本没有问题work.exe是否尝试在
App.js
Ext.require('WD.model.App')顶部添加
Ext.require('WD.model.Window')
Window.js的顶部
?也许sencha工具没有通过
关联
。@bhovhannes是的;没有工作,如果它工作了,它会很难看..因为它应该通过它们。
associations: [{
    type : 'belongsTo',
    model: 'WD.model.App',
    associationKey: 'appId'
}]