У меня возникла проблема, когда почти идентичные запросы require.js config работают по-разному, в одном случае не удается установить baseUrl
и path
.
Структура папки
- /JS
-
- приложение /
-
- ЛИЭС /
-
-
- hogan.js
-
-
-
- магистральная
-
-
-
-
- Backbone.js
-
-
-
-
-
- и др.
-
-
-
-
- boostrap
-
-
-
- JQuery
-
-
-
-
- jquery.js
-
-
-
-
-
- и др.
-
-
-
-
- требуется
-
-
-
-
- require.js
-
-
-
-
-
- и др.
-
-
-
- Шаблоны /
-
- require.config.js
Script тег
<script data-main="/resources/js/require.config" src="/resources/js/libs/require/require.js"></script>
Требуется конфигурация
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();
}
);
В обоих случаях добавляется тег script, который показывает полное содержимое require.config.js, начиная с:
<script type="text/javascript" charset="utf-8" data-requirecontext="_" data-requiremodule="require.config" src="/resources/js/require.config.js">
Определение в приложении/маршрутизаторе
define(
[
'backbone',
'templateEngine'
],
// etc
);
Однако, когда проблема возникает, приложение/маршрутизатор никогда не загружается, только следующее (нет 404, ничего):
GET require.js 200 OK 180ms
GET require.config.js 200 OK 69ms
Если я введу require(["app/router"]);
в консоль Firebug, я получаю следующее:
"NetworkError: 404 Not Found - /resources/js/backbone.js
"NetworkError: 404 Not Found - /resources/js/templateEngine.js"
Когда я ожидаю увидеть следующее:
- /resources/js/libs/backbone/backbone.js
- /resources/js/libs/hogan.js
Решения, предпринятые
- Я попытался использовать различные комбинации относительных и абсолютных путей для
baseUrl
иpaths
. НапримерbaseUrl: libs
иpaths: { "app" : "../app" }
и т.д. - Я попробовал
deps
иcallback
вместоrequire
нижеconfig
. - Я добавил свойство
context
, соответствующееbaseUrl
. - Я переместил require.config.js в каталог libs (редактируя
baseUrl
иpaths
по мере необходимости; по-прежнему получаю ту же самую проблему с игнорируемой конфигурацией, только она пытается загрузить /resources/js/libs/backbone. js вместо этого, например).
Примечание
Эта структура папок и файл конфигурации работают на моем localhost, где я удаляю/resources/из путей, как показано выше. Вместо этого для baseUrl
и paths
используются все относительные пути (не начиная с /). Но на самом сервере это не вариант.