2013-06-03 23 views
6

Burada çok sayfalı şim paylaşımı modeli takip ediyorum çok sayfalı şim içinde) (modülü tanımlamak: Aynı common.js kullanarak ve bir çok benzer ve basit ayarlanmış sahip değilim https://github.com/requirejs/example-multipage-shimrequireJS - Uyumsuz anonim

:

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

Her şey yükler ince ve ben gerektiren kapatılması içindeki operasyonlarını çalıştırmaya devam edebilir, ancak yukarıda koduyla eşleşmeyen anonim define() modülü hakkında şikayetçi Firefox'ta bir hata alıyorum. Ne kadar basit olduğu ve örnek kalıbı takip ettiğim göz önüne alındığında, tam olarak neden alıyorum diye biraz kafam karıştı. Ben herhangi bir yerde define() kullanmadım. Son 24 gün içinde bir şey değişti mi? (Multipage git repo güncellendi)?

+0

Sorunu gösteren, gönderebileceğiniz bağımsız bir JSFiddle var mı? Örnekte olduğu gibi "tam olarak" diyorsunuz ama ** nasıl ** tam olarak "oldukça fazla" :-) – explunit

+0

Ne yazık ki, yukarıda yaptığım şeyleri parçalara ayırırsam büyük bir platform üzerinde çalışıyorum jsfiddle iyi çalışıyor. Bu yüzden, sayfada başka bir şeyle ilgili bir sorun veya çatışma olabileceğine inanmamı sağlıyor. Yine de bir tane notu - eğer common.js'de boş bir tanım (function() {}) yerleştirilirse, requirejs.config() 'a (çakışma olmadan bile) başvurduğum anda, hata atılmaz, hatayı alıyorum. .. – Dan

+0

Tamam, problemin burada bir olanla aynı olduğuna inanıyorum, http://stackoverflow.com/questions/15371918/mismatched-anonymous-define-module, bir anonim olarak requirejs kullandığımda sorun olur modül tanımı. Dokümanlar, bu durumun optimizer kullanılmadığında bir sorun olduğunu ve bunu düzeltmek için optimize ediciyi kullandığını söylüyor. Soru şu: Gelişmeyi yaparken etrafta ne yapmamız gerektiği, yani, uyumsuz bir ortamda nasıl çalışıyoruz? – Dan

cevap

7

Cevap umarım birileri yardımcı olur, bu oldu. Bu varlıklardan bazıları, yani jquery 1.10, spin.js vb., AMD ile uyumluydu ve define() işlevini çağırıyordu. Spin.js durumunda,() anonim olarak adlandırılan, anonim olarak çağıran dokümanlardaki Eşleşmeyen Anonim hatanın ikinci noktasında açıklandığı gibi yüklemeyi hızlandıran çağrılıyordu.

İyi üzüntü.

+0

'Hatalı' dosyalara bir ID verdiniz mi? –

+0

Hayır, üçüncü taraf kaynağını değiştirmek istemediğimiz için, mermiyi parçaladık ve bazı yapısal değişiklikler yaptık - ya da saldırgan kütüphanenin tüm yüklemesini RequireJS akışından kaldırdık (daha sonra global olarak bir şeyi referans aldık) ya da tam tersi Yalnızca akış kullanımını gerektirecek bir kitaplığı kısıtladı. – Dan

+0

Sorunlu kütüphaneleri nasıl gerekli hale getirebileceğinizi anlıyorum. İhtiyacım olan çözüm olabileceğini düşündüğüm ilk örneği anlamıyorum. - "Sorunlu kütüphanenin tüm yüklemelerini RequireJS akışından kaldırdık" dediniz. İlk sorunuzdan, requreJS akışınızdan zaten ayrıldığımız JS dosyalarını düşündüm. (benim durumum gibi). Onları içeri getiremem. –

0

Neler olup bittiği açıktır. Modülü yüklemeye çalışıyorsunuz, ancak common.js dosyanız sadece require.config kullanıyor ve modül yok. Bu nedenle güncellenmiş RequireJS (Firefox değil) bir hata atar. Ortak JS'nizde tanımlayın ve hatalar gitmeli.

bu büyük bir platform oldu Verilen

, diğer sürü gerektirir akışı (biz yavaş yavaş geçiş yapıyorsanız) dışında yüklenen ediliyordu:

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

Korkarım ki bu değil, RequireJS kesinlikle bir AMD tanımının yüklenmesini gerektirmiyor. Ayrıca, kod örnek deseninde modülle sarılmış değildir ve bu RequireJS projesine yakın bir kişi tarafından yazılmıştır. Son olarak, denedim ve hala hatayı aldım. Denediğiniz için teşekkürler! – Dan