错误:[$injector:unpr] 未知提供者:$routeProvider。

68

我正在尝试运行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'。此外,我真的需要在路由中定义控制器吗?这种方法似乎不太可扩展。我的应用可能有一千个视图。我认为,肯定有办法定义路由而不必加载所有控制器。

3
你尝试过在myApp模块定义中添加ngRoute吗,像这样:angular.module('myApp', ['ngRoute']) - Chandermani
这个问题应该链接到Angular js视频教程中,在讲师演示中一切都完美运作。 - Rohit
2个回答

144

看起来你忘记在myApp的依赖中包含ngRoute模块。

在Angular 1.2中,他们使ngRoute成为可选项(这样你就可以使用第三方路由提供程序等),你必须在模块中显式地依赖它,以及包括单独的文件

'use strict';

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

1
救了我的命。我正在升级到Angular 1.2。谢谢。 - Subtubes
1
这个答案在我尝试从http://yeoman.io/codelab.html运行todo应用程序的“dist”版本时拯救了我的生命-所以非常感谢Cuong Vo! - kasperwf
1
这是否意味着在测试时,您只需将其作为模块的参数提供,而不是在加载模块进行测试时提供参数? - Katana24
请注意,如果您将路由放在自己的JS文件中,则还需要在该文件的依赖项中指定“ngRoute”模块。这个问题困扰了我...我已经为app.js设置了依赖项,但是在routes.js中没有设置。 - Eric Burdo

33
在 Angular 1.4+ 中,除了添加依赖项外,还需要进行以下操作。
angular.module('myApp', ['ngRoute'])

我们还需要引用单独的angular-route.js文件。

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

请查看https://docs.angularjs.org/api/ngRoute


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接