Gagal instantiate modul [$ injector: unf] Penyedia tidak dikenal: $ routeProvider

216

Saya menerima kesalahan ini setelah memutakhirkan dari AngularJS 1.0.7 ke 1.2.0rc1 .

Scotty.NET
sumber

Jawaban:

404

Modul ngRoute bukan lagi bagian dari angular.jsfile inti . Jika Anda terus menggunakan $ routeProvider maka Anda sekarang harus memasukkan angular-route.jsdalam HTML Anda:

<script src="angular.js">
<script src="angular-route.js">

Referensi API

Anda juga harus menambahkan ngRoutesebagai ketergantungan untuk aplikasi Anda:

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

Jika sebaliknya Anda berencana menggunakan angular-ui-routeratau sejenisnya maka hapus saja $routeProvider ketergantungan dari modul Anda .config()dan gantikan dengan penyedia pilihan yang relevan (mis $stateProvider.). Anda kemudian akan menggunakan ui.routerdependensi:

var app = angular.module('MyApp', ['ui.router', ...]);
Scotty.NET
sumber
2
Sepertinya ui-routerproyek ini bisa menjadi alternatif yang lebih fleksibel, jika Anda memulai dari awal ( github.com/angular-ui/ui-router )
gatoatigrado
2
@gatoatigrado - Saya baru menyadari berapa lama ui.statesintaks adalah ketika saya upgrade aplikasi saya dari angular-ui-router v0.0.1 ke v0.2.0 , yang berarti sekarang menggunakan ui.routernama. Saya minta maaf atas kebingungan yang disebabkan.
Scotty.NET
3
Di mana alamat CDN angular-route.js?
Sahar Sany
@SaharSany - Dokumentasi untukangular-route memberikan alamat CDN serta opsi lainnya. Adapun ui-routersaat ini tidak ada CDN yang saya tahu.
Scotty.NET
3
ui-routertampaknya tidak berada di CDN sendiri, meskipun ada di cdnjs: cdnjs.com/libraries/angular-ui-router
Nick McCurdy
41

menambah jawaban scotty:

Opsi 1: Masukkan ini dalam file JS Anda:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script>

Opsi 2: atau cukup gunakan URL untuk mengunduh ' angular-route.min.js ' ke lokal Anda.

dan kemudian (opsi apa pun yang Anda pilih) tambahkan 'ngRoute' ini sebagai ketergantungan.

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

Bersulang!!!

mayankcpdixit
sumber
5
Maaf tapi saya harus mengakui bahwa ini sepertinya sangat mirip dengan jawaban yang sudah disediakan ??
Scotty.NET
2
... di tempat lain saya menemukan bahwa orang tidak dapat menemukan tautan / URL untuk mengunduh atau merujuk 'angular-route.min.js'. Itulah yang saya berikan dalam Jawaban dan Ya saya setuju untuk Ketergantungan 'ngRoute' yang Anda bicarakan, jadi saya menambahkan itu juga dalam jawaban Saya.
mayankcpdixit
Saya lebih dari sedikit bosan dengan perpustakaan neraka. Tentunya harus ada cara yang lebih baik daripada mencari tahu modul tumpukan yang tepat dengan modul.
Inilah yang dilakukan @SamanthaAtkins, Jika Anda tahu apa yang diperlukan, Anda menyuntikkan dependensi dan menyertakan file JS jika Anda tidak memiliki kode untuk Ketergantungan itu. Meskipun saya akan menghargai cara yang lebih baik jika seseorang menyarankan.
mayankcpdixit
3

Dalam kasus saya itu karena file tersebut diperkecil dengan cakupan yang salah. Gunakan Array!

app.controller('StoreController', ['$http', function($http) {
    ...
}]);

Sintaks kopi:

app.controller 'StoreController', Array '$http', ($http) ->
  ...
Lucia
sumber