? Tengo un problema donde las llamadas a la configuración require.js casi idénticas parecen funcionar de manera diferente, en un caso no estableciendo baseUrl
y path
.¿Por qué require.js ignora la configuración baseUrl y las rutas
estructura de carpetas
- /js
-
- app/
-
- libs/
-
-
- hogan.js
-
-
-
- backbone
-
-
-
-
- Backbone.js
-
-
-
-
-
- etc.
-
-
-
-
- boostrap
-
-
-
- jquery
-
-
-
-
- jQuery.js
-
-
-
-
-
- etc.
-
-
-
-
- requieren
-
-
-
-
- require.js
-
-
-
-
-
- etc.
-
-
-
- templates/
-
- require.co nfig.js
etiqueta de script
<script data-main="/resources/js/require.config" src="/resources/js/libs/require/require.js"></script>
requieren configuración
require.config(
{
baseUrl: "/resources/js/libs",
shim: {
"underscore": {
exports: "_"
},
"backbone": {
deps: [
"json2",
"underscore",
"jquery"
],
exports: "Backbone"
}
},
paths: {
"app": "/resources/js/app",
"backbone": "backbone/backbone",
"jquery": "jquery/jquery",
"templates": "/resources/js/templates",
"templateEngine": "hogan"
}
}
);
require(
[
"app/router"
],
function(AppRouter){
AppRouter.execute();
}
);
En ambos casos, una etiqueta de script se anexa que muestra el contenido completo de require.configjs, a partir de:
<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="require.config" src="/resources/js/require.config.js">
definicion en app/enrutador
define(
[
'backbone',
'templateEngine'
],
// etc
);
Sin embargo, cuando se produce el problema, app/enrutador no está cargado, sólo la siguiente (sin 404, nada) :
GET require.js 200 OK 180ms
GET require.config.js 200 OK 69ms
Si entro require(["app/router"]);
en la consola de Firebug me sale el siguiente:
"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"
Cuando lo que espero ver es:
- /resources/js/libs/backbone/backbone.js
- /resources/js/libs/hogan.js
Soluciones intentaron
- He intentado utilizar varias combinaciones de rutas relativas y absolutas para
baseUrl
ypaths
. Por ejemplobaseUrl: libs
, ypaths: { "app" : "../app" }
, etc. - Probé
deps
ycallback
en lugar de utilizarrequire
debajoconfig
. - He agregado la propiedad
context
, haciendo coincidirbaseUrl
. - he movido require.config.js en las librerías directorio (edición
baseUrl
ypaths
según proceda; aún así obtener la misma edición de config ignorado, sólo se intenta cargar /recursos/js/libs/columna vertebral .js en su lugar, por ejemplo).
Nota
Esta estructura de carpetas y archivos de configuración funciona en mi localhost, donde elimino /recursos/ de los caminos como se muestra arriba. En su lugar, todas las rutas relativas (ninguna que comience con /) se utilizan para baseUrl
y paths
. Pero en el servidor real eso no es una opción.
Tuve el mismo problema. Si alguna vez no quiere modificar el nombre del archivo, puede alias el módulo a través del hash de ruta en la configuración de requirejs. p.ej. "require.config ({paths: {myModule:" /path/to/my.weird.module "}})" – jdc0589
No obstante, no creo que pueda alias su nombre de archivo de configuración. Esto funciona si el archivo de configuración no se ve afectado. – morewry