Angular.js:未捕获错误,没有模块:myapp

时间:2013-06-24 19:15:37

标签: javascript angularjs

我正在尝试启动angular.js项目。这是我的index.html:

<!doctype html>
<html ng-app="myapp">
<head>
    <meta charset="utf-8">
    <base href="{% url 'app' %}" />

    <title>Project</title>
</head>
<body>
    <div ng-view>
        <p>Loading...</p>
    </div>

    <script>
        var url = function(path) { return '{{ STATIC_URL }}' + path };
    </script>
    <script src="{{ STATIC_URL }}js/jquery-1.10.1.js"></script>
    <script src="{{ STATIC_URL }}js/angular.js"></script>
    <script src="{{ STATIC_URL }}js/project/app.js"></script>
    <script src="{{ STATIC_URL }}js/project/controllers.js"></script>
</body>
</html>

头上的url 'app'只打印子路径/ app,例如。这是我的app.js:

'use strict';

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

app.config(['$routeProvider', function($router) {
    $router.when('/', {
        templateUrl: url('partials/foo.html'),
        controller: controllers.Foo
    });
}]);

问题在于,每当我尝试运行它时,都会引发异常:Uncaught Error: No module: myapp,这与angular-seed的工作方式几乎相同。我在Google和StackOverflow上搜索过,但没有一个答案(onetwo)帮助了我。

这是关于我的错误的fiddle(你应该打开浏览器的控制台来查看它)。出了什么问题?

6 个答案:

答案 0 :(得分:40)

您的脚本的顺序非常重要,请尝试将其放入<head>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
    var app = angular.module('myapp', []);

    app.controller('Ctrl', function($scope){
        $scope.variable = "Hello";
    });
</script>
<body ng-app="myapp">
    <div ng-controller="Ctrl">
        <p>{{variable}}</p>
    </div>    
</body>

在这里试试:

http://jsfiddle.net/vvfnN/2/

答案 1 :(得分:10)

补充AlexCheuk的答案,我意识到我的app.js文件涉及一个闭包:

(function($) {
    'use strict';

    // all angular.js stuff
)(jQuery);

删除它工作的封闭(不改变亚历克斯所说的订单)!我不知道为什么,但那没关系。

答案 2 :(得分:2)

我面临同样的问题,但上述技巧都没有对我有用,但是这一个,请参阅图片中的设置

从“OnLoad”更改为“No wrap - ”

enter image description here

答案 3 :(得分:0)

在我使用IIFE表示法的情况下,我忘记了自己调用括号。

(function () {
     angular.module("adminApp", []); 
}() //don't forget self invoke parentheses
);  

答案 4 :(得分:0)

我遇到了同样的错误,但我犯了一个愚蠢的错误,我没有在我的jsp页面中包含controller.js文件。 刚刚包括这个:

<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/controller.js"></script>

并且效果很好。

答案 5 :(得分:-4)

我在运行Yeoman / grunt服务器的同时遇到了类似的问题。 为我修复的是重启grunt服务器。