2012-12-12 18 views
5

Jeśli uruchomię optymalizator bez ikony "namespace:" foo "" wszystko działa zgodnie z oczekiwaniami. Kiedy dodać „nazw:«foo»” w app.build.js otrzymuję ten błąd:RequireJS + problem z przestrzenią nazw jQuery

GET: file:// (path to the project) /require-jquery/jquery-require-sample/webapp/jquery.js
main-built.js:main-built.js:1839

Uncaught Error: Script error http://requirejs.org/docs/errors.html#scripterror
main-built.js:163

Mam rozejrzał się na rozwiązanie, ale niewiele jest informacji na temat korzystania RequireJS optymalizator eksportować pojedynczy plik , z jquery i przestrzenią nazw. Dzięki!

mam umieścić RequireJS przykładowy projekt + jQuery (ze zmodyfikowanym app.build.js i app.html) on github here.

({ 
    baseUrl: ".", 
    out: 'main-built.js', 
    //Comment out the optimize line if you want 
    //the code minified by UglifyJS 
    optimize: "none", 

    paths: { 
     "jquery": "require-jquery" 
    }, 

    name: 'main', 
    namespace: 'foo' 
}) 

Odpowiedz

0

spróbuj usunąć parametr name zamiast (chyba że naprawdę musisz).

0

Wiem, że jestem spóźniony na przyjęcie tutaj, ale ten wątek jest łatwy do znalezienia, wystarczy google.

jquery ma wykrywanie AMD. Używasz przestrzeni nazw dla requirejs, co powoduje pewne zmiany we wszystkich wywołaniach funkcji define.

To powoduje zmiany w jquery że właśnie łamie go (lub po prostu określić rzeczywisty kod, ale twój przestrzeni nazw połączenie nie będzie działać tak)

Jestem obecnie walczą tej kwestii. Widzę następujące opcje:

  1. użyć jQuery globalnie, jak to 2005
  2. Hack wymagają przestrzeni nazw do zrozumienia funkcji wykrywania AMD
  3. włamywanie razem podkładkę dla jQuery, aby to działało

jestem wypróbuje trzecią opcję i zgłoś się, jeśli jest cokolwiek do zgłoszenia

[edycja]

Poskładanie nazw działa również wewnątrz podkładki :(nie ma sensu, ale po prostu działa. W tej chwili nie mam pojęcia, jak sprawić, by działała z podkładką i bez żadnych zmian w samej jquery. Jeśli chcesz bawić się z jquery, w pobliżu końca jest linia, która sprawdza, czy define jest funkcją do definiowania modułów AMD. Przerwij tę linię (np. Dodając false &&) i masz działającą podkładkę.