2013-09-04 11 views
5

Angular and RequireJS ile çalışıyorum. RequireJS optimizasyonunu kullanmaya çalıştım ve şimdi uygulamam çalışmıyor. Eminim bu, küçültme nedeniyle.Küçültme hatasını bulmak için kaynak haritası nasıl kullanılır

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injector/modulerr?p0=myapp&p1=Error%3…t%20(http%3A%2F%2Flocalhost%3A8080%2Fwebapp%2Fapp%2Fmain-built.js%3A4%3A10)

hata mesajı sorunu bulmak çok yararlı değildir, bu yüzden ben orijinal kaynak kodunda hatayı saptamak için kaynak haritayı kullanabilirsiniz merak ediyorum. Hata ayıklamak için Chrome'u kullanıyorum.

Düzenleme: Tam hata StackTrace İşte

Failed to instantiate module myapp due to: 
Error: [$injector:unpr] http://errors.angularjs.org/1.2.0rc1/$injector/unpr?p0=e 
    at Error (<anonymous>) 
    at http://localhost:8080/webapp/app/main-built.js:3:19581 
    at http://localhost:8080/webapp/app/main-built.js:3:31899 
    at n (http://localhost:8080/webapp/app/main-built.js:3:30540) 
    at Object.r [as invoke] (http://localhost:8080/webapp/app/main-built.js:3:30716) 
    at http://localhost:8080/webapp/app/main-built.js:3:30147 
    at Array.forEach (native) 
    at o (http://localhost:8080/webapp/app/main-built.js:3:19891) 
    at i (http://localhost:8080/webapp/app/main-built.js:3:29951) 
    at yt (http://localhost:8080/webapp/app/main-built.js:4:10 

cevap

7

sizin için çalışan o yapmalıdır adımlar şunlardır: Chrome'un Geliştirici Araçları içinde

  1. Ayarlar simgesine (sağ alt köşe) tıklayın.
  2. Ayarlar iletişim kutusunda "Kaynak haritalarını etkinleştir" seçeneğini işaretleyin.
  3. Hata ayıklamak istediğiniz web sayfasını açın. (Bu yeni sekmede)
  4. Açık Geliştirici Araçları
  5. aksi Krom haritası dosyasını indirmek olmayacak, sayfa
    • Bu önemlidir yükle.
  6. basın
    • Bu sizin hata sağda, yani main.js:12 incelemek istediğiniz hata bağlantısı.
  7. İşte bu kadar. Artık, komut dosyanızın insan tarafından okunabilir, indirgenmemiş sürümüne yönlendirilmeniz gerekir.

kaynak haritaları hala çalışmıyorsa:

  1. en alt kısmında yer emin minified JS dosyası içerdiğinden emin olun, bir şey gibi:

    //# sourceMappingURL=main.js.map

  2. emin olun eşleme dosyası indiriliyor. Sayfa yeniden yükleme sırasında indirilen Geliştirici Araçları'nın "Ağ" bölümünde listelenmelidir. Bu gibi görünmelidir:

    source map file download status

  3. Belki RequireJS en küçültme şeritlerini çıktınıza JS dosyasından sourceMappingURL comment dışarı?

    uglify2 yöntemini kullandığınızdan ve generateSourceMaps seçeneğini etkinleştirdiğinizden emin olun.

requirejs: { 
    compile: { 
    options: { 
     /* some other options here */ 
     optimize: 'uglify2', 
     logLevel: 0, 
     preserveLicenseComments: false, 
     generateSourceMaps: true 
    } 
    } 
} 
+0

cevabı ama benim vaka başvuruları 'angular.min.js hata bağlantısını kabul: İşte Grunt benim requirejs hedef yapılandırma ilgili bölümü olan 7 'yerine 'main.built.js'. Konsolda 'main.built.js: 3' - angular.min.js: 7' arasında değişen hata bağlantısını kısaca görebiliyorum ancak 'main.built.js'yi tıklayamıyorum. hata bağlantısı – Sydney

+0

Açıklığa kavuşturmaya değer bir şey, küçültülmüş dosyaların sonunda ek açıklama için '// #' vs '// @' dır. jQuery, AngularJS'yi "#" kullanırken "@" değerini kullanır. Farkın ne olduğundan emin değilsiniz ve belki de yeni bir soru bile olmalı ... – jmort253

+2

@ jmort253 - '// @' [IE'nin koşullu yorumlarıyla ilgili sorunlara neden oldu] (http://bugs.jquery.com/ticket/13274 #comment: 6), yani // #'nin lehine terkedildi mi? – kamituel

İlgili konular