RequireJS nie uruchamia skryptu data-main przed załadowaniem wymaganych modułów

Mój projekt zawiera następujące pliki:

./index.html
./js/main.js
./js/vendor/require.js
./js/viewmodel/vm.js

Theindex.html ma następujący odpowiedni fragment:

<script data-main="js/main.js" src="js/vendor/require.js"></script>
<script type="text/javascript">
    require(['viewmodel/vm', 'ko'], 
        function(viewmodel, ko) {
            ko.applyBindings(viewmodel);
        }
    );
</script>

Thejs/main.js plik jest następujący:

var root = this;
define('jquery', ['http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js'], function () { return root.$; });
define('ko', ['http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.1.0.js'], function (ko) { return ko; });

Thejs/viewmodel/vm.js plik...

define(['jquery', 'ko'], 
    function($, ko) {
        return {
            subject: 'world',
            greeting: 'hello'
        }
    }
);

Po otwarciu przeglądarki na index.html przeglądarka próbuje załadować plik o nazwiejs/ko.js zamiast używać modułu zdefiniowanego wmain.js. Wygląda na to, że plik js wskazywany przez atrybut data-main nie jest gwarantowany do uruchomienia przed rozwiązaniem zależności. Nie wydaje mi się to poprawne, ponieważ jednym z celów głównego pliku js jest zdefiniowanie wymaganej konfiguracji (tj. Ścieżki, podkładki itp.). Używam require v2.1.2.

Działa to doskonale, jeśli skopiuję zawartość mojegomain.js plik do bloku skryptu windex.html. Przez „doskonale w porządku” mam na myśli to, że uznał, że ko jest modułem i znajduje odpowiednie łącze CDN, aby rozwiązać ko, zamiast próbować pobrać./js/ko.js.

questionAnswers(3)

yourAnswerToTheQuestion