2016-04-05 17 views
0

bu hatayıgulp getting Bilinmeyen sağlayıcı kullanarak angularjs dosya minification sonra: t hata?

main-d2a9731a79.js:2 Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to: 
Error: [$injector:unpr] Unknown provider: t 

alıyorum Aşağıda angularjs benim kodudur. Küçültmeden önce çalıştı. Bir kez küçültülmüş, yukarıdaki hatayı vermeye başladı.

app.config(function ($routeProvider) { 
    $routeProvider 
    // route for the home page 
    .when('/', { 
     templateUrl: site_url + '/inbox/', 
     controller: 'inboxController' 
    }); 
}); 
app.controller('inboxController',['$scope', '$http', function ($scope, $http) { 
    console.log('tesing'); 
}]); 
+3

Olası yinelenen ait enjekte etmek dizisi sürümünü kullanabilirsiniz

app.config(appConfig); //inject dependencies for your config constructor function appConfig.$inject = ["$routeProvider"]; //constructor:appConfig function appConfig($routeProvider){ } 

[JavaScript hatası: bağımlılık

var app = angular.module('app',['ngRoute']); 

yapılandırma olarak uygulamanızda

kullanım ngRoute Bilinmeyen sağlayıcı: tProvider <- t sonra Rails minification Angula rjs] (http://stackoverflow.com/questions/18950181/javascript-error-unknown-provider-tprovider-t-after-rails-minification-angul) –

cevap

1

sorun app.config(function ($routeProvider) { ... });app.config(function (t) { ... }); açısal Bağımlılık Enjeksiyon mekanizması gibi bir şeye minified aldığında doğru bağımlılıkları belirlemek mümkün olmadığıdır. Bu yüzden Unknown provider: t hatası atıldı.

Bu tür hataları önlemek için her zaman minification güvenli sözdizimini kullanmalısınız. Bunu yapmanın bir yolu: app.config(['$routeProvider', function ($routeProvider) { ... }]);. Bu konuda daha fazla bilgiye buradan ulaşabilirsiniz: A Note on Minification.

+0

Tekrar teşekkürler ... günümü kurtardın – Anudeep

1

Kodunuzu küçültürseniz, değişkenler ve parametreler mümkün olduğunca az sayıda karakter olarak yeniden adlandırılır - bu, dosyaların boyutlarının çok azaltılabilmesinin yollarından biridir. Bununla birlikte, basit sözdizimini kullanıyorsanız Angular'ın bağımlılık enjeksiyonunu kırmanın yan etkisine sahiptir, çünkü neyin enjekte edileceğini belirlemek için parametre isimlerini okuyamaz. Eğer inşa sürecinde ngAnnotate gibi bir aracı kullanabilirsiniz

app.config(['$routeProvider', function ($routeProvider) { 
      $routeProvider 
      // route for the home page 
      .when('/', { 
       templateUrl: site_url + '/inbox/', 
       controller: 'inboxController' 
      }); 
}]); 
app.controller('inboxController',['$scope', '$http', function ($scope, $http) { 
      console.log('tesing'); 
}]); 

Veya basit dönüştürür, hangi: Eğer denetleyici yapmış olduğu

Seçenekleriniz, enjekte dizi sözdizimi kullanmak ya vardır otomatik olarak minification ile çalışan bir sözdizimi. Dizi sözdizimini çok daha az okunabilir/bakımı kolay bulduğum için kişisel olarak son seçeneği öneririm.

Bu konuyla ilgili Angular developer guide numaralı telefondan daha fazla bilgi var.

1

Ana modülünüzde ngRoute kullandığınızdan emin olun, ayrıca Minification dizeleri değişmez. u da bağımlılıkları

app.config(['$routeProvider', function ($routeProvider) { 
İlgili konular