Javascript 未捕获错误:模块';myApp';不可用!(AngularJS)

Javascript 未捕获错误:模块';myApp';不可用!(AngularJS),javascript,html,angularjs,angularjs-directive,angularjs-controller,Javascript,Html,Angularjs,Angularjs Directive,Angularjs Controller,我正在学习角度教程,开始时遇到了问题。加载myApp模块时抛出错误。如本教程所述,这应该是创建控制器的三种方法之一。 这是我正在学习的教程中的打印屏幕: 刷新网页时,Chrome控制台中出现以下错误: Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to: Error: [$injector:nomod] Module 'myApp' is not available! You either

我正在学习角度教程,开始时遇到了问题。加载myApp模块时抛出错误。如本教程所述,这应该是创建控制器的三种方法之一。

这是我正在学习的教程中的打印屏幕:

刷新网页时,Chrome控制台中出现以下错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
这是我的HTML文件

  <html ng-app="myApp">
        <head>
        </head>
        <body>
            <h1>Hello world!</h1>   

            <div ng-controller="MainController">
                {{ 2+2 }}
                <br>
                {{ val }}
            </div>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
            <script src="app.js">
        </body>
    </html>
那么我的问题是什么?我想不出来


提前感谢您

您应该向角度模块
myApp
注册一个
控制器

App.js

var myApp = angular.module('myApp', []);
myApp.controller('MainController', MainController );
var MainController = function($scope){
    $scope.val = "Main controller variable value"
}
基本上,您所做的是正确的,但该代码后面是AngularJS的旧版本,您声明控制器的方式只不过是将控制器称为函数,它需要启用
allowGlobals()
方法
$controllerProvider
。由于Angular 1.3+
allowGlobals()
方法通过添加以下代码被禁用,所以您可以启用它,以使代码正常工作,但不推荐这样做

配置

myApp.config(['$controllerProvider',
  function($controllerProvider) {
    $controllerProvider.allowGlobals();
  }
]);
请参阅此处的相同内容尝试以下操作:

myApp.controller ("MainController",[$scope, function ($scope){
      $scope.val = "Main controller variable value"
}]);
ng controller
指令在MyApp模块中查找主控制器

模块“myApp”不可用!您要么拼错了模块名,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数

您的原始问题是由于无效的脚本标记造成的。基本上,您的脚本标记没有关闭,需要关闭它才能让浏览器下载app.js文件。脚本标记不是自动关闭的,因此它需要一个关闭标记

<script src="app.js">

应该是

<script src="app.js"></script>

现在,一旦你修复了这个问题,你将陷入另一个错误

[ng:areq]参数“MainController”不是函数,未定义

由于您使用的是最新的angular版本,即任何>=1.3.x的内容都需要使用
.controller
构造手动注册控制器


注意-这有点令人困惑,因为屏幕截图显示您正在使用1.2.0(不一定需要明确的控制器注册)但问题中的片段显示为1.4.x.

还有一个问题:我应该继续学习本教程,还是Angular的1.2和1.4版本之间存在太多差异?@DavorBramorPečnik这是一个棘手的问题:)因为理想情况下,在这一点上,用1.2.x做任何事情都没有意义,但是如果你想从angular开始学习,那么这个教程应该很好,但是你可以一直使用1.4,找出相关的差异并将其合并。但是我不确定你是否会发现太多关于1.4.x的教程。Angular官方文档有一个版本选择器,它也应该很有用。Super。然后我将继续本教程。再次感谢您的回答。
<script src="app.js"></script>