Saya memiliki aplikasi Angular yang cukup sederhana yang berjalan dengan baik di mesin dev saya, tetapi gagal dengan pesan kesalahan ini (di konsol browser) setelah saya menerapkannya:
Uncaught Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20%24http%20%3C-%20%24compile
Tidak ada pesan lain selain itu. Itu terjadi saat halaman pertama kali dimuat.
Saya menjalankan ASP.NET MVC5, Angular 1.2RC3, dan mendorong ke Azure melalui git.
Googling belum menghasilkan sesuatu yang menarik.
Ada saran?
EDIT:
Saya menggunakan TypeScript, dan mendefinisikan dependensi saya dengan $inject
variabel, misalnya:
export class DashboardCtrl {
public static $inject = [
'$scope',
'$location',
'dashboardStorage'
];
constructor(
private $scope: IDashboardScope,
private $location: ng.ILocationService,
private storage: IDashboardStorage) {
}
}
Saya percaya bahwa harus (atau dimaksudkan untuk) mengatasi masalah penggantian nama variabel lokal yang muncul selama minifikasi dan yang dapat menyebabkan kesalahan ini.
Meski begitu, ini jelas ada hubungannya dengan proses minifikasi, seperti saat saya menyetel BundleTable.EnableOptimizations = true
mesin dev, saya bisa mereproduksinya.
$inject
variabel publik, yang menurut saya setara dengan cara yang Anda sarankan (lihat docs.angularjs.org/guide/di ). Saya akan memperbarui pertanyaan saya.BundleTable.EnableOptimizations = true;
), saya dapat mereproduksi masalah. Melanjutkan untuk melihat.Saya sendiri mengalami masalah yang sama, tetapi definisi pengontrol saya terlihat sedikit berbeda dari di atas. Untuk pengontrol yang ditentukan seperti ini:
Cukup tambahkan baris setelah deklarasi yang menunjukkan objek mana yang akan dimasukkan saat pengontrol dibuat:
Ini membuatnya aman untuk minifikasi.
sumber
Masalah ini terjadi ketika pengontrol atau direktif tidak ditentukan sebagai larik dependensi dan fungsi. Sebagai contoh
Ketika diminimalkan, '$ scope' yang diteruskan ke fungsi controller diganti dengan nama variabel satu huruf. Ini akan membuat sudut tidak mengerti ketergantungan. Untuk menghindari hal ini, berikan nama dependensi bersama dengan fungsi sebagai array.
sumber
Jika Anda telah memisahkan file untuk aplikasi sudut \ resources \ directives dan hal-hal lain, maka Anda dapat menonaktifkan minifikasi bundel aplikasi sudut Anda seperti ini (gunakan Bundle baru () alih-alih ScriptBundle () di file konfigurasi bundel Anda):
Dan aplikasi sudut akan muncul dalam bundel yang tidak dimodifikasi.
sumber
Jika Anda telah memisahkan file untuk aplikasi sudut \ resources \ directives dan hal-hal lain, maka Anda dapat menonaktifkan minifikasi bundel aplikasi sudut Anda seperti ini (gunakan Bundle baru () alih-alih ScriptBundle () di file konfigurasi bundel Anda):
sumber
Tambahkan $ http, $ scope services di controller fucntion, terkadang jika mereka tidak ada kesalahan ini terjadi.
sumber
Saya memiliki masalah yang sama tetapi masalahnya berbeda, saya mencoba membuat layanan dan mengirimkan $ scope ke sana sebagai parameter.
Itu cara lain untuk mendapatkan kesalahan ini seperti dokumentasi tautan itu:
sumber