【问题标题】:ExtJS 5 requests file with empty name /.jsExtJS 5 请求具有空名称 /.js 的文件
【发布时间】:2016-11-17 23:10:21
【问题描述】:

我已经使用最新的 sencha cmd 5.0.2.270 和最新的 ExtJS 5.0.1 创建了一个全新的工作区。在里面生成了一个app。写了一点代码。

我使用 sencha app build 生成生产版本。

开发加载良好,但生产构建尝试加载没有名称的文件并获得 404

GET http://yassa-built.dev/.js?_dc=1410352524548 404(未找到) 出现该错误后,它根本不会加载。

我不明白它在搜索什么。发展根本没有抱怨。

我用它创建了一个存档https://mega.co.nz/#!Dk0gDRJD!dNITsq1fGFs5T4d-4yYFnA6_K6EcAhFkxoeEjaJu7MY (~600kb)。它包括源代码和生产版本。

UPD 我找到了它开始破裂的地方。在 RadioAdminController.js 文件中。

 case 'menu_referals':
    return app.setSubView('redmed-radioapp-referals', {
      store: Ext.create('RedmedAdmin.store.Referals')
    });

如果我不创建商店 - 它可以工作。生产构建没问题。这家店没什么特别的:

Ext.define('RedmedAdmin.store.Referals', {
  extend: 'Ext.data.Store',
  model: 'RedmedAdmin.model.Referal',
  autoLoad: false,
  autoSync: true
});

【问题讨论】:

    标签: javascript extjs sencha-cmd


    【解决方案1】:

    在挣扎的第四天,一个简单的答案揭晓。

    我错过了一个依赖项。链:RedmedAdmin.store.Referals -> RedmedAdmin.model.Referal -> RedmedAdmin.model.redmed.RadioAppBase。

    由于我提供了存档,我将在此处列出类 RedmedAdmin.model.redmed.RadioAppBase(工作版本):

    Ext.define 'RedmedAdmin.model.redmed.RadioAppBase',
        extend: 'Ext.data.Model'
        requires: ['Ext.data.identifier.Uuid', 'Ext.data.proxy.Rest']
    
        identifier: 'uuid'
        fields: [{
                name: 'id'
                type: 'string'
        }]
        schema:
                namespace: 'RedmedAdmin.model.redmed.radioapp'
                proxy:
                        type: 'rest'
                        url: 'http://10.0.29.140:6543/api/rest/{entityName:lowercase}'
                        reader:
                            type: 'json'
                            rootProperty: '{entityName:lowercase}'
                        listeners:
                            'exception': (request, operation, eOpts ) ->
                                Ext.log {level: 'error'}, "Data request to #{request.url} failed. Reply: #{operation.responseText}"
    

    它为所有孩子定义了一个模式。该架构使用休息代理(类型:“休息”)。它不包含在损坏的版本中。要求中仅列出了 Ext.data.identifier.Uuid。

    【讨论】:

    • 我在使用最新的 ext(5.1.0.47) 和 cmd(5.1.0.13) 时遇到了类似的问题。我通过在要求中列出“Ext.layout.container.Border”类来修复它..
    • 我仍然遇到问题,我的小应用程序中有一个视图和一个视图模型。我尝试为视图模型放置架构,然后分别尝试为视图模型放置一个商店......它没有用......我正在使用 Extjs5.0.1 。我正在尝试自己调试。如果我得到答案,我会更新。在此之前,请 some1 可以进一步了解为什么会发生此错误
    • 知道如何解决这个错误,我在编写大代码后发现了这个错误,所以很难猜出原因,我已经解决了 sencha watch 和 in firebug,请问有什么其他的技术可以解决这个问题吗?
    • 我有一个类似的问题,当我的意思是 ajax 时,我试图使用“rest”类型的代理。在此之前无法进行测试和生产(这是 ExtJS 6)
    【解决方案2】:

    从 build/testing/ 运行应用以查看缺少哪个依赖项。

    【讨论】:

      【解决方案3】:

      我之前也遇到过同样的问题,解决方法是添加必需的 Ext.layout.container.Border' & 'Ext.layout.container.Center'。我不得不手动注释掉代码并运行生产版本来检查(因为它在开发模式下工作正常)。在某些情况下,它会指出缺少的依赖项,例如 widget/...js

      【讨论】:

        【解决方案4】:

        这个问题与需要在 requires 数组中添加的类有关。我使用 Sencha 应用程序构建测试运行构建,然后在调试中我知道哪个类加载为空。为了解决我的问题,我添加了Ext.layout.container.Column,但它可以是任何类,所以最好在测试中运行构建然后找出问题。

        【讨论】:

          【解决方案5】:

          为了使这些配置属性正常工作,您需要将此“Ext.data.identifier.Uuid”类添加为项目级别。

          Ex.Application app.js 文件中包含 Ext.data.identifier.Uuid 作为要求

          Ext.application({
          
              requires: [
                  'Ext.data.identifier.Uuid' // Include it
              ],
              models: [
                  'UsersModel',
                  'RolesModel',
                  'LoginModel'
              ]
          
              .
              .
              .
              .
          
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-08-12
            • 2018-06-28
            • 1970-01-01
            • 1970-01-01
            • 2013-06-03
            • 2021-04-02
            相关资源
            最近更新 更多