错误:[$ injector:unpr]未知提供程序:$ routeProvider


67

我正在尝试启动并运行AngularJS 1.2 RC2应用程序。目前,我一直在使用Angular Seed项目来尝试启动并运行我的应用程序。不幸的是,Angular Seed项目使用的是v1.0.7。在Angular Seed项目中,我将依赖项更新为以下内容:

$script([
  'res/js/angular-1.2.0-rc.2.js',
  'res/js/angular-route-1.2.0-rc.2.js',
  'res/js/app.js?v=2',
], function() {
  // when all is done, execute bootstrap angular application
  angular.bootstrap(document, ['myApp']);
});

在app.js中,我具有以下内容:

'use strict';

angular.module('myApp', []).
    config(['$routeProvider', function($routeProvider) {
        $routeProvider.otherwise({redirectTo: '/home'});
    }]);

当我运行此应用程序时,出现以下错误:

Error: [$injector:unpr] Unknown provider: $routeProvider

我已经阅读了一些其他的响应,例如1)注入'ngroute'或2)您需要在路由中定义控制器。我的问题是,我不知道如何注入ngroute。另外,我真的需要在路径中定义控制器吗?这种方法似乎不可扩展。我的应用程序可能有1000次浏览。在我看来,似乎必须有一种方法来定义路由,而不必加载所有控制器。


3
您是否尝试过myApp像这样在模块定义中添加ngRouteangular.module('myApp', ['ngRoute']).
Chandermani

这个问题应该在Angular js视频教程中链接,在教学演示中一切都可以完美运行。
Rohit 2014年

Answers:



143

看来您忘记了在myApp依赖项中包含ngRoute模块。

在Angular 1.2中,它们使ngRoute为可选(因此您可以使用第三方路由提供程序等),并且您必须在模块中显式依赖它,并包括单独的文件

'use strict';

angular.module('myApp', ['ngRoute']).
    config(['$routeProvider', function($routeProvider) {
$routeProvider.otherwise({redirectTo: '/home'});
}]);

1
救了我的屁股。正在升级到Angular 1.2,谢谢
Le Garden Fox

1
尝试从yeoman.io/codelab.html运行todo应用程序的“ dist”版本时,此答案挽救了我的性命-谢谢Cuong Vo!
kasperwf 2014年

1
那么这是否意味着在测试时只需要将其作为模块的参数提供,而不是在加载模块进行测试时作为参数提供?
Katana24年

请记住...如果将Routes放在其自己的JS文件中,则还需要在该文件的依赖项中指定“ ngRoute”模块。这让我有点...我为app.js设置了依赖项,但没有在route.js中设置依赖项
Eric Burdo 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.