错误:部署 sencha touch 应用程序后,即使文件已加载,也未声明以下类

Posted

技术标签:

【中文标题】错误:部署 sencha touch 应用程序后,即使文件已加载,也未声明以下类【英文标题】:Error : The following classes are not declared even if their files have been loaded" after deploying sencha touch application 【发布时间】:2017-07-03 10:31:48 【问题描述】:

Uncaught SyntaxError: Unexpected token

未捕获的错误:以下类未声明,即使它们的 文件已加载:'Ext.Title'。请检查源代码 他们对应的文件可能的错别字:'touch/src/Title.js 在 Object.onFileLoaded (sencha-touch.js:8618) 在对象。 (sencha-touch.js:3267) 在 htmlScriptElement.onLoadFn (sencha-touch.js:8275)

【问题讨论】:

【参考方案1】:

第一个错误表示某个文件已加载但不包含预期的 JSON 或 javascript。相反,该文件包含 HTML 或 XML。

第二个错误说文件touch/src/Title.js不包含Ext.define('Ext.Title', ...)

如果满足以下条件,则会连续发生这两个错误:

您的应用程序在某处使用Ext.Title, 您没有将 Ext.Title 添加到您的需求部分, 文件touch/src/Title.js在应用程序目录中不存在并且 如果未找到文件,提供应用程序的 Web 服务器会提供 HTML 错误页面。

仅当定义 (Ext.define('Ext.Title') 未编译到 app.js 中时,您的应用程序才会尝试加载文件 touch/src/Title.js

通常,根本问题是您在文件中缺少requires 指令。 requires 指令在编译时进行评估,并将组件添加到 app.js,因此您的应用不会尝试在运行时加载 Title.js。如果您将需求添加到使用它的组件中:

Ext.define('MyOwnComponent',
    requires: ['Ext.Title'], // <- add it here
    constructor: function() 
        Ext.create('Ext.Title'); // <- if it is used e.g. here
    
);

然后再次编译您的应用程序,您应该一切顺利。如果你不知道它在哪里使用,你可以将它添加到你的 Application.js 中,其中也有一个 requires 部分:

Ext.define('MyApplication',
    extend: 'Ext.app.Application',
    requires: ['Ext.Title'], // <- add it here
    stores:[],
    ...
);

【讨论】:

以上是关于错误:部署 sencha touch 应用程序后,即使文件已加载,也未声明以下类的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch 部署选项?

Sencha Touch with WindowsPhone8: Ext.Loader 加载文件失败

在 Sencha Touch 2.2.1 中运行应用程序示例时出现 JavaScript 错误

商店排序后 Sencha Touch Pull to Refresh 不起作用

Sencha-Touch:未捕获的类型错误:无法读取未定义的属性“代理”

Sencha Touch 2:应用程序构建后面板不会滚动