2012-10-12 192 views
5

Tengo la siguiente configuración requireJS. Cuando trato de hacer referencia al paquete/módulo ImagingX siempre me vuelvo indefinido aunque puedo ver que el script se ha cargado en Firebug. Si muevo el archivo js en cuestión al directorio baseUrl y elimino el paquete/funciona como se esperaba.RequireJS cargando archivo de script pero la referencia pasada no está definida

¿Qué estoy haciendo mal?

window.requirejs.config(
     { 
      baseUrl: '/Scripts', 
      paths: { 
       "jquery": "./jquery-1.7.1.min", 
       "jqx": "/Content/Plugins/jqWidgets", 
       "package" : "/Scripts/packages" 
      }, 
      urlArgs: "bust=" + (new Date()).getTime(), 
      shim : { 
       'jqx/jqxcore': ['jquery'], 
       'jqx/jqxsplitter': ['jquery','jqx/jqxcore'] 
      } 
     } 
    ); 

    window.require(['jquery', 'layoutManager', 'container', 'package/ImagingX'], 
     function ($,lm,container,px) { 

      px.Focus(); 

      $(document).ready(function() { 
       lm.Init(); // Sets up panes 
       container.Init(); //Set up the containers 
      }); 
    }); 

actualización 15/10/2012

Me estoy desesperado por resolver este problema ahora, he despojado todo de nuevo a los fundamentos así que aquí está el nuevo archivo principal:

(function() { 

    requirejs.config({ 
     paths: { 
      "packages": "packages" 
     } 
    }); 

    require([ 
      'packages/testmodule' 
     ], 
     function (tm) { 
       alert(tm); 
    }); 

})(); 

Y el módulo que se encuentra en una subcarpeta llamada paquetes.

define('testmodule', 
function() { 

    alert("called"); 

    return { 
     set : 'rar '  
    }; 

}); 

Puedo ver el script cargado pero nunca se ejecuta, por lo tanto, nunca consigo una referencia para él.

enter image description here

Respuesta

3
requirejs.config({ 
     paths: { 
      //"jquery": "./jquery-1.8.2.min", 
      //"jqx": "/Content/Plugins/jqWidgets", 
      "templates": 'templates', 
      "text": "commonRequireJsModules/text", 
      "domReady": "commonRequireJsModules/domReady", 
      "packages" : 'packages/' 
      //'signalR': './jquery.signalR-0.5.3.min', 
      //'knockout': './knockout-2.1.0', 
      //'pubsub' : './pubsub' 
     } 
     //,urlArgs: "bust=" + (new Date()).getTime() 
     //, 
     //shim : { 
     // 'jqx/jqxcore': ['jquery'], 
     // 'jqx/jqxsplitter': ['jquery', 'jqx/jqxcore'], 
     // 'signalR': ['jquery'], 
     // 'pubsub' : ['jquery'] 
     //} 
    }); 

La barra al final de los paquetes la ruta parece haber abordado el problema, en parte con eliminar también el nombre en la parte definida del módulo. Por lo que ahora se ve como

define(['deps'],function(deps){ 
}); 

En lugar de

define('myMod',['deps'],function(deps){ 
}); 
1

par de cosas:

  • parece extraño usar window.require en lugar de sólo requiere
  • nombres en 'cuña' deben coincidir con los nombres de 'caminos', esto no es el caso, aquí
  • document.ready se realiza de forma gratuita por requerir, no hay necesidad de hacerlo de nuevo

Entonces, ¿tiene algún error de carga en su consola JS? ¿Dice que falta un script?

Aquí es un trabajo requiere configuración, el enrutador se encuentra en la misma carpeta de este código:

require.config({ 
    paths:{ 
     'jquery':'lib/jquery.min', 
     'backbone':'lib/backbone.min', 
     'underscore':'lib/underscore.min', 
     'router':'Router' 
    }, 
    shim:{ 
     'backbone':{ deps:['jquery', 'underscore'] }, 
     'router':{ deps:['backbone'] } 
    } 
}); 

require(['router', 'jquery', 'underscore', 'backbone'], 
    function (Router) { 
     var router = new Router(); 
     $('img').hide(); 
    }); 
}); 

Y el index.html:

<html> 
<head> 
    <script data-main="assets/js/App.js" src="assets/js/lib/require.min.js"></script> 
</head> 
<body>...</body> 
</html> 
+0

Eso es lo raro el guión es cargado por RequireJS puedo ver la carga en Firebug, simplemente no hay referencia. jqx está igualando el shim tal vez no entendí esto. – RubbleFord

Cuestiones relacionadas