从EXTJS 4.2升级到EXTJS 6.x后的错误

时间:2016-01-12 07:58:33

标签: extjs extjs4.2 sencha-cmd extjs6

到目前为止,我已经通过两种方式完成了升级:

1)我设置了新的sencha app generate [appName]并将 4.2 文件和目录转移到 6.x 。设置完成后,执行sencha app build

时会发生错误
The following error occurred while executing this line:
/var/www/html/backoffice-test/EcommBackoffice/.sencha/app/build-impl.xml:381: The following error occurred while executing this line:
/var/www/html/backoffice-test/EcommBackoffice/.sencha/app/init-impl.xml:382: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : Ext.ux.grid.filters.Filters
rareyes@MAKDL-RAREYES:/var/www/html/backoffice-test/EcommBackoffice$

除此之外,在加载应用程序时,控制台错误会显示以下行:

http://localhost:1841/EcommBackoffice/Overrides/view/Table.js?_dc=1452581765612`
http://localhost:1841/EcommBackoffice/Overrides/selection/Model.js?_dc=1452581765612`
[E] [Ext.Loader] Some requested files failed to load.
[E] [Loader] The following classes failed to load:
[E] [Loader] Overrides.view.Table from Overrides/view/Table.js
[E] [Loader] Overrides.selection.Model from Overrides/selection/Model.js
[E] [Loader] EcommBackoffice.Application from app/Application.js

2)被困在第一个上,我的第二个方法就是在现有应用程序上执行sencha app upgrade -ext。它成功更新,除了执行sencha app build时,它会发出类似的错误,例如:

The following error occurred while executing this line:
/var/www/html/backoffice-2.0/src/main/webapp/.sencha/app/build-impl.xml:381: The following error occurred while executing this line:
/var/www/html/backoffice-2.0/src/main/webapp/.sencha/app/init-impl.xml:382: com.sencha.exceptions.ExNotFound: Unknown definition for dependency : Ext.ux.grid.FiltersFeature

和一个简短的控制台错误:Uncaught ReferenceError: Ext is not defined

当我修改index.html并替换x-compile代码段

时会发生这种情况
<!-- <x-compile> -->

<!-- <x-bootstrap> -->
<link rel="stylesheet" href="bootstrap.css">
<script src="ext/ext-all-debug-w-comments.js"></script>
<script src="bootstrap.js"></script>
<!-- </x-bootstrap> -->
<script src="app.js"></script>

<!-- </x-compile> -->

到此:

<script id="microloader" data-app="a32fd6d2-db0c-4c4b-a6a2-4185b3ee3fd4" type="text/javascript" src="bootstrap.js"></script>

在编辑index.html之前,x-compile会引发不同的错误:

/.sencha/app/init-impl.xml:382: com.sencha.exceptions.ExBuild: Mixed-Mode x-compile and microload markup is currently unsupported

这就是我选择6.x

提供支持的Microloader的原因

我在这里迷路了。 ExtJS显然没有适当的Sencha指南直接从 4.x升级到6.x 。它只升级一步,例如 4.x到5.x 5.x到6.x 。即便如此,这些指南还不是很清楚,恕我直言,缺乏文件。

任何可以指出我提供的错误存在问题的人?

1 个答案:

答案 0 :(得分:1)

好吧,Cmd错误消息说得清清楚楚:

Unknown definition for dependency : Ext.ux.grid.filters.Filters

这意味着ExtJS6不提供Ext.ux.grid.filter.Filters,这在您的应用程序中的某处是必需的。

正如Ext文档所述,Ext.ux命名空间中的所有内容都不是升级安全的,因为它是用户提供的内容,Sencha发现它很有用并添加到Ext zip文件中。通常,您只需在互联网上搜索官方zip文件中缺少的ux功能的可用ExtJS 6.0.x实现;或者自己写。

但是对于你的特殊情况,我相信他们将来自ux的gridfilters移动到ExtJS 4.2.x中的官方分支,然后删除了ExtJS 5中的别名,最后,在ExtJS 6中,他们用插件替换了该功能。

所以,请查看Ext.grid.filters.Filters,我相信它可以满足您的需求,但您必须重写部分代码才能使用它。 (更改要求,将引用从功能移动到插件,可能会考虑其他更改。)

我认为第二条错误消息(“[E] [Ext.Loader]某些请求的文件无法加载。”)表示与第一条错误消息相同,我希望requires:['Ext.ux.grid.filters.Filters']中有Overrides/view/Table.js {1}}。 (Overrides.selection.Model未加载,因为它需要Overrides.view.Table,并且未加载EcommBackoffice.Application,因为它引用Overrides.selection.Model