2012-09-04 20 views
9

Tengo un problema con las rutas relativas en requirejs.La ruta relativa no funciona con las rutas

Antes que nada, tengo la siguiente estructura. Estoy corriendo con un host virtual (os.com) y el camino es os.com/test

enter image description here

index.html

<script data-main="config" src="require.js"></script> 

config.js

require.config({ 

    baseUrl: "./apps", 
    deps: ['ui'], 
    paths: { 
    ui: 'ui/ui', 
    system: 'system/system', 
    core: 'core/core' 
    } 


}); 

ui.js

define(['./class/menuBuilder',"./class/window"], function(menuBuilder, windowBuilder){ 


    return { 
     menuBuilder: menuBuilder, 
     windowBuilder: windowBuilder 
    } 

}); 

Cuando lo ejecuto, obtengo los siguientes errores.

GET http://os.com/test/apps/class/menuBuilder.js 404 (Not Found) 
GET http://os.com/test/apps/class/window.js 404 (Not Found) 

Si saco propiedad 'ui' de propiedad de los caminos '' y luego cambiar a deps [ 'ui/ui'], funciona, pero me gustaría utilizar rutas.

config.js Cambiado

require.config({ 

    baseUrl: "./apps", 
    deps: ['ui/ui'], 
    paths: { 
    system: 'system/system', 
    core: 'core/core' 
    } 


}); 

¿Cómo cambio mi configuración para hacer caminos y trabajos ruta relativa juntos?

Respuesta

12

Tuve un problema similar. No tenía deps: 'ui' como parte de mi configuración, solo la configuración de la ruta, pero aun así la referencia relativa del módulo ('./class/menuBuilder') no funcionaría desde el módulo cargado con la ruta ("ui: 'ui/ui '") y usaría baseUrl en su lugar. Para resolverlo, he definido 'ui' como un paquete:

require.config({ 

    baseUrl: "./apps", 
    deps: ['ui'], 
    paths: { 
    system: 'system/system', 
    core: 'core/core' 
    }, 
    packages : [ 
    { 
     name: 'ui', 
     location : 'ui', 
     main : 'ui' 
    }, 
    ] 

}); 

En este caso se requieren cargar los módulos pathed relativamente correctamente.

Aquí es un útil post: Relative paths with RequireJS modules/packages

4

La solución aquí es utilizar la configuración de mapa, no configuración caminos. Las configuraciones de rutas solo deben usarse para carpetas, no para módulos en sí. Las configuraciones del mapa se aplican a los módulos individuales.

Así que trate de:

require.config({ 
    map: { 
    '*': { 
     'ui': 'ui/ui' 
    } 
    } 
}); 
Cuestiones relacionadas