Requirejs data-main не устанавливает baseUrl - PullRequest
9 голосов
/ 05 марта 2012

Я установил data-main для Requirejs и в соответствии с документацией должен установить baseUrl для всех моих файлов скриптов. Но это не так. Моя структура папок такая:

Home/Index.html
Content/scripts/main.js
Content/scripts/libs/require/require.js
Content/scripts/libs/jquery/require_jquery.js
Content/scripts/libs/jquery/jquery-1.7.1.mins.js

Вот тег скрипта в моем Index.html :

<script data-main="/PAWS/Content/scripts/main.js" src="/PAWS/Content/scripts/libs/require/require.js" type="text/javascript"></script>

Я бы предположил, что для моего baseUrl будет установлено значение / PAWS / Content / scripts /, но оно не работает для меня. В моем main.js я делаю это:

require(
    { paths: 
        {   jquery: 'libs/jquery',
            knockout: 'libs/knockout'
        }
    },

    ['jquery/require_jquery'],


    function ($) { .... }
);

В моем require_jquery.js файле я делаю это:

define(["libs/jquery/jquery-1.7.1.min.js"], function () {
    return jQuery;
});

Но я получаю ошибку 404, говорящую, что:

GET http://localhost/PAWS/Home/libs/jquery/jquery-1.7.1.min.js 404 NOT FOUND

Видите ли ... мой baseUrl должен быть / PAWS / Content / scripts ... Но он полностью игнорирует мои настройки атрибута data-main и просто разрешает / PAWS / Home / быть baseUrl. Что я делаю не так?

1 Ответ

10 голосов
/ 05 марта 2012

Из документов RequireJS API :

Однако, если имя зависимости имеет одно из следующих свойств, оно обрабатывается как обычный путь к файлу, как что-то, что былопередано тегу <script src="">:

  • Заканчивается на ".js".
  • Начинается с "/".
  • Содержит протокол URL, например"http: "или" https: ".

Отсюда видно, что ваш явный" .js "в конце libs/jquery/jquery-1.7.1.min.js смешивает ваш путь re: baseUrl.Попробуйте libs/jquery/jquery-1.7.1.min вместо.

...