Подтвердить что ты не робот

Почему require.js игнорирует config baseUrl и пути

У меня возникла проблема, когда почти идентичные запросы 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 используются все относительные пути (не начиная с /). Но на самом сервере это не вариант.

4b9b3361

Ответ 1

Решение должно было не иметь. (периоды) в файле имени файла конфигурации. После переименования файла require-config.js все работало так, как ожидалось. Другие файлы в порядке с точками в имени, а не в главном файле конфигурации.