2013-06-03 11 views
6

mam w następstwie podziału wielostronicowego podkładka wzór tutaj: https://github.com/requirejs/example-multipage-shimrequireJS - Niezgodne anonimowy define() modułu w wielostronicowego podkładki

Używam tych samych common.js i mają bardzo podobną i proste konfigurowanie:

<script src="js/library/requirejs/require.min.js"></script> 
<script> 
require(['./js/config/common'], function (common) { 
    //go on... 
}); 
</script> 

Wszystko ładunki porządku i mogę kontynuować prowadzenie prac wewnątrz zamknięcia wymagają, ale wciąż otrzymuję błąd w Firefoksie narzekają na niedopasowane anonimowego define() modułu z powyższym kodzie. Biorąc pod uwagę, jak jest to proste i podążam za wzorcem przykładowym, jestem trochę zdezorientowany, dlaczego go otrzymuję. W żadnym miejscu nie używałem funkcji define(). Czy w ciągu ostatnich 24 dni zmieniło się coś w requireJS (od aktualizacji aktualizacji git wielostronicowych)?

+0

Czy istnieje niezależne JSFiddle, które można opublikować, co ilustruje problem? Mówisz, że to "prawie dokładnie", jak na przykład, ale ** jak ** dokładnie jest "prawie" :-) – explunit

+0

Pracuję na ogromnej platformie niestety, jeśli rozdzielę to, co zrobiłem powyżej, aby jsfiddle to działa dobrze. Prowadzi mnie to do przekonania, że ​​może być problem lub konflikt z czymś innym na stronie. Jedna uwaga stras - jeśli po prostu umieści pustą definicję (function() {}) w common.js błąd nie zostanie zgłoszony, gdy tylko wskażę requirejs.config() (nawet bez argumentów), pojawia się błąd. .. – Dan

+0

OK, uważam, że problem jest taki sam jak ten tutaj, http://stackoverflow.com/questions/15371918/mismatched-anonymous-define-module, ponieważ problem występuje, gdy używam requirejs w anonimowym definicja modułu. Dokumenty mówią, że jest to problem, gdy nie korzystasz z optymalizatora i mówisz, użyj optymalizatora, aby to naprawić. Pytanie brzmi - jak dokładnie mamy obchodzić się z nim w trakcie rozwoju, tj. Pracować w nieoptymalizowanym środowisku? – Dan

Odpowiedz

7

odpowiedzi było to, mam nadzieję, że ktoś pomaga:

Biorąc pod uwagę to była wielka platforma, wiele innych rzeczy był załadowany poza przepływu require (my powoli przejście).

Niektóre z tych zasobów, tj. Jquery 1.10, spin.js itp., Były kompatybilne z AMD i wywoływały funkcję define(). W przypadku spin.js wywołał anonimowo funkcję define(), co spowodowało awarię ładowania, co wyjaśniono w drugim punkcie błędnego anonimowego błędu w dokumentach o rozwiązaniach.

Dobry smutek.

+0

Czy przekazałeś "naruszającym" pliki identyfikator? –

+0

Nie, ponieważ nie chcieliśmy zmienić źródła strony trzeciej, po prostu zgarnęliśmy bullet i wprowadziliśmy pewne zmiany strukturalne - albo usunęliśmy całe ładowanie obraźliwej biblioteki z przepływu RequireJS (potem odnosimy się do rzeczy na całym świecie) lub na odwrót , ograniczył bibliotekę do Wymagaj tylko użycia przepływu. – Dan

+0

Rozumiem, w jaki sposób można wprowadzić wymagające biblioteki naruszające prawa. Nie rozumiem pierwszego przykładu, który moim zdaniem może być rozwiązaniem, którego potrzebuję. - Powiedziałeś _ "usunęliśmy całe ładowanie biblioteki powodującej obrażenia z przepływu RequireJS" _. Od pierwszego pytania myślałem, że obrażające pliki JS już odbiegają od przepływu requreJS. (jak to jest w mojej sytuacji). Nie mogę ich wprowadzić. –

0

Jest jasne, co się dzieje. Próbujesz wczytać moduł, ale plik common.js ma tylko require.config i nie ma modułu. Dlatego zaktualizowany RequireJS (nie Firefox) zgłasza błąd. Dołącz definicję do wspólnego JS, a błąd powinien zniknąć.

// common.js stuff... 
define({}); 
+0

Obawiam się, że to nie to, RequireJS nie wymaga do załadowania definicji AMD. Ponadto, kod nie jest zawijany przez moduł w przykładowym wzorze, a jest to napisane przez kogoś blisko projektu RequireJS. Wreszcie, spróbowałem i nadal dostaję błąd. Dzieki za probe! – Dan

Powiązane problemy