当使用angular 1.2而不是1.07时,下面这段代码就不再有效了,为什么?

'use strict';

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

app.config(['$routeProvider', '$locationProvider',
    function($routeProvider, $locationProvider) {
        $locationProvider.html5Mode(true);
        $routeProvider.
        when('/', {
            templateUrl: 'part.html',
            controller: 'MyCtrl'
        }).
        otherwise({
            redirectTo: '/'
        });
    }
]);

问题出在注入器配置部分(app.config):

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.0rc1/$injector/modulerr?p0=muninn&p1=Error%…eapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.0rc1%2Fangular.min.js%3A31%3A252) 

如果我没记错的话,这个问题是从angular 1.1.6开始的。


当前回答

该问题是由于缺少包含ngRoute模块造成的。从1.1.6版本开始,它是一个单独的部分:

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

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

其他回答

有时,当您在项目之间切换并在同一个端口上一个接一个地运行项目时,我看到过这种错误。在这种情况下,去chrome开发工具>网络,并尝试检查实际编写的js文件:如果文件与工作区匹配。要解决此问题,请选择“在网络下禁用缓存”。

我也遇到了同样的问题,尝试了所有可能的解决方法。但最后我从文档中得知,ngRoute模块现在是分开的。看看这个链接

解决方案: 在angular.min.js脚本后添加cdn angular-route.js

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

这个错误的另一个触发点是在你的路由定义中把"."放在" else "或任何其他路由之前:

  app.config(['$routeProvider',
     function($routeProvider) {
        $routeProvider.
           when('/view1', {
              templateUrl: 'partials/view1.html',
              controller: 'Ctrl1'
           }).
           otherwise({
              redirectTo: '/viewCounts'
           });
     }]);

再一次被句号羞辱。爱死JS了!

该问题是由于缺少包含ngRoute模块造成的。从1.1.6版本开始,它是一个单独的部分:

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

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

除了下面的答案,如果你在控制台([$injector:nomod], MINERR_ASSET:22)中出现这个错误,但一切似乎都正常工作,请确保你的index.html中没有重复的include。

因为如果您有使用此模块的文件的重复包含,并且包含在具有实际模块声明的文件之前,也会引发此错误。