使用Sencha CMD构建时Ext.window.Window依赖定义未知问题求助
解决ExtJS构建时“Unknown definition for dependency : Ext.window.Window”的错误
这个错误的核心原因是Ext.window.Window是ExtJS Classic Toolkit专属的组件,而你的应用可能默认使用了Modern Toolkit,或者没有正确引入Classic Toolkit的依赖,导致构建工具找不到这个组件的定义。
具体分析
ExtJS 6采用了双Toolkit架构:
- Classic Toolkit:包含传统桌面端的全量组件(比如
Ext.window.Window、Ext.grid.Panel等),适合构建传统桌面应用 - Modern Toolkit:针对移动端和现代浏览器优化的轻量级组件集,没有
Ext.window.Window这类组件(替代方案是Ext.Panel或Ext.Msg等)
你使用sencha generate view -base Ext.window.Window login.Login生成视图时,指定了Classic的组件作为基类,但如果你的应用没有配置为使用Classic Toolkit,构建时自然会找不到这个依赖。
解决方案
根据你的需求,有两种处理方式:
方式1:切换应用为Classic Toolkit
如果你的应用只需要Classic组件,直接修改项目配置:
- 打开项目根目录下的
app.json文件 - 找到
"toolkit"配置项,将其值从"modern"改为"classic":"toolkit": "classic", - 保存文件后,重新运行构建命令:
sencha app build
方式2:配置为Universal应用(同时支持两个Toolkit)
如果需要同时使用Modern和Classic组件,需要在app.json中引入Classic的依赖:
- 打开
app.json,找到"requires"数组,添加"ext-classic":"requires": [ "ext-classic", // 其他已有的依赖项 ] - 保存后重新执行
sencha app build即可。
额外提示
如果你的应用原本就是Modern架构,且不需要切换到Classic,那应该更换视图的基类为Modern支持的组件,比如Ext.Panel,重新生成视图:
sencha generate view -base Ext.Panel login.Login
内容的提问来源于stack exchange,提问作者stefano
相关产品推荐
相关产品推荐

