Не удалось создать экземпляр модуля [$ injector: unpr] Неизвестный поставщик: $ routeProvider


Ответы:


404

Модуль ngRoute больше не является частью angular.jsфайла core . Если вы продолжаете использовать $ routeProvider, то теперь вам нужно включить angular-route.jsв ваш HTML:

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

Справочник по API

Вы также должны добавить ngRouteв качестве зависимости для вашего приложения:

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

Если вместо этого вы планируете использовать angular-ui-routerили тому подобное, просто удалите $routeProvider зависимость из вашего модуля .config()и замените ее соответствующим поставщиком (например $stateProvider). Затем вы бы использовали ui.routerзависимость:

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

2
Похоже, что ui-routerпроект может быть более гибкой альтернативой, если вы начинаете с нуля ( github.com/angular-ui/ui-router )
gatoatigrado

2
@gatoatigrado - я только что понял, сколько лет ui.stateсинтаксису, когда я обновил свое приложение с angular-ui-router v0.0.1 до v0.2.0 , что означает, что теперь оно использует ui.routerимя. Приношу свои извинения за путаницу.
Scotty.NET

3
Где находится адрес CDN angular-route.js?
Sahar Sany

@SaharSany - документация дляangular-route дает адрес CDN, а также другие параметры. Что касается ui-routerв настоящее время нет CDN, о котором я знаю.
Scotty.NET

3
ui-routerПохоже, он не находится в своем собственном CDN, хотя он находится на cdnjs: cdnjs.com/libraries/angular-ui-router
Ник

41

добавив к ответу Скотти:

Вариант 1. Включите это в свой файл JS:

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

Вариант 2: или просто используйте URL для загрузки ' angular-route.min.js на свой локальный компьютер.

а затем (какой бы вариант вы не выбрали) добавьте этот ngRoute в качестве зависимости.

пояснил: var app = angular.module('myapp', ['ngRoute']);

Ура !!!


5
Извините, но я должен признать, что это кажется очень похожим на уже предоставленный ответ ??
Scotty.NET

2
... в других местах я обнаружил, что люди не могут найти ссылку / URL-адрес для загрузки или обратиться к «angular-route.min.js». Это то, что я дал в ответе, и да, я согласен с зависимостью «ngRoute», о которой вы говорили, поэтому я добавил это и в свой ответ.
Mayankcpdixit

Я более чем устал от библиотеки JS Hell. Конечно, должен быть лучший способ, чем вычислять правильный модуль стека за модулем.

Вот как это делается @SamanthaAtkins. Если вы знаете, что нужно, вы вводите зависимость и включаете файл JS, если у вас нет кода для этой зависимости. Хотя я бы оценил лучший способ, если кто-то предложит.
mayankcpdixit

3

В моем случае это было потому, что файл был сокращен с неправильной областью действия. Используйте массив!

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

Синтаксис кофе:

app.controller 'StoreController', Array '$http', ($http) ->
  ...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.