extjs extjs4 extjs4.1 extjs-mvc

Cómo abordar la advertencia ExtJS "Carga sincronizada"



extjs4 extjs4.1 (3)

Al usar ExtJS 4+ con carga asíncrona, uno estaría familiarizado con este tipo de advertencia:

[Ext.Loader] Synchronously loading ''MY.particular.module''; consider adding Ext.require(''MY.particular.module'') above Ext.onReady

¿Cómo identificar qué módulo de JavaScript (ya sea un controlador, un componente, etc.) está causando esta advertencia? Es decir, el lugar donde se incluye el módulo que se carga sincrónicamente en la lista de requires .

¿Cuál es la forma correcta de corregir estas advertencias? ¿Existe una manera automática de hacer esto?

PD: la única forma de hacerlo ahora es establecer un punto de depuración donde se genera la advertencia y rastrear hacia atrás a qué línea está el archivo que está generando la advertencia.


Debería incluir una opción de configuración obligatoria en cada módulo como una buena práctica de programación. ¿Por qué no estás haciendo esto?


En Chrome, en tu stacktrace, (¿creo que Firefox también acumula stacktraces hoy en día?), El archivo que está llamando en un módulo suele ser (¿siempre?) El primer archivo que no es ext-all.

Ext.require es algo que se usa para automatizar cosas (por ejemplo, js-minification) por lo que no se puede automatizar por sí solo.

Cuando declaras un componente (usando Ext.define o Ext.create ) debes especificar los módulos del componente que Ext va a usar para el componente con Ext.require (bueno, si quieres deshacerte de esta advertencia al menos)

Cada componente personalizado que está utilizando debe seguir más o menos la misma idea:

Ext.define(''My.app.Panel'', { extend: ''Ext.panel.Panel'', // requires: [ ''My.app.PanelPart2'', //Hey! warning is gone! ''My.app.PanelPart3'' ] constructor: function (config) { this.callParent(arguments); //... }, statics: { method: function () { return ''abc''; } } });

Y si no le importa el rendimiento, y solo quiere deshacerse de las advertencias parásitas (la locura técnicamente, puede ensuciar su mensaje de error, en la configuración del cargador).

Ext.loader.setConfig({ enabled: true, paths: { ''My'': ''my_own_path'' }, onError:function(){}//or custom handler? :D

Ver la respuesta mitchsimeons: http://www.sencha.com/forum/showthread.php?178888-Tons-of-Synchronously-Loading-Warning-Messages

y una publicación de blog sobre por qué requiere: http://www.sencha.com/blog/using-ext-loader-for-your-application


Tuve el mismo problema, pero lo solucioné hoy. El problema fue que no ayudó retroceder en la pila, ya que no había un punto de interrupción en el código y no sabía dónde colocar el punto de interrupción.

Así que agregué una llamada al depurador ("depurador") en la línea del archivo ext-all-rtl-debug.js que el navegador se estaba quejando. Así que tuve la stacktrace y descubrí dónde ocurrió el problema. Después de eso, eliminé la declaración del depurador y todo funcionó como debería.

El problema con mi código era que había una tienda que necesitaba una clase especial. Agregué una propiedad de "requiere" a la tienda, pero no ayudó. Tuve que agregar una propiedad "requiere" al archivo application.js. Esto solucionó el problema.