Angularjs未捕获错误:迁移到V1.3时出现[$injector:modulerr]

Angularjs Uncaught Error: [$injector:modulerr] when migrating to V1.3

本文关键字:modulerr injector 3时 V1 错误 迁移 Angularjs      更新时间:2024-05-26

我正在学习Angular.js,但我不知道这个简单的代码出了什么问题。它看起来很好,但给了我以下错误。

**Error**: Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.14/$injector/modulerr?p0=app&p1=Error%3A%20…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.14%2Fangular.min.js%3A17%3A381)

在添加ng-app="app"之前(我只是将其保留为ng-app),它给了我以下错误。为什么?

Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=Ctrl&p1=not%20a%20function%2C%20got%20undefined
    at Error (native)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417
    at Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510)
    at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78)
    at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65
    at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408)
    at A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316)
<!doctype html>
    <html ng-app="app">
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
      </head>
      <body>
        <div ng-controller="Ctrl">
          <input ng-model="name">
          <h1>{{name}}</h1>
          <h2>{{age}}</h2>
        </div>
         <script>
          var Ctrl = function($scope)
           {
              $scope.age = 24;
           };
          </script>

      </body>
    </html>

AngularJS 1.3版全局控制器功能声明禁用后

您需要首先创建一个AngularJS模块&然后将所有组件连接到该特定模块。

代码

function Ctrl($scope) {
    $scope.age = 24;
}
angular.module('app', [])
    .controller('Ctrl', ['$scope', Ctrl]);

特别是在您的案例中,AngularJS1.3.14存在一些问题(将其降级为1.3.13效果良好)。虽然我更喜欢你使用angular 1.2.27AngularJS 1.6.X,这是一个更稳定的版本&AngularJS的最新版本。

工作Plunkr

更新:

您可以通过允许在angular.config中声明全局控制器来将当前代码转换为工作状态。但这不是运行angular应用程序的正确方式。

function Ctrl($scope) {
    $scope.age = 24;
}
angular.module('app', [])
    .config(['$controllerProvider',
        function ($controllerProvider) {
            $controllerProvider.allowGlobals();
        }
    ]);

我自己也陷入了这个问题一段时间。按顺序检查以下内容:-

  1. angular.js脚本的路径是正确的(无论您是从本地源代码还是作为外部资源在HTML中调用它)。

  2. 接下来,一旦你的angular.js正确,请检查你的应用程序是否已初始化。

    您的app.js文件中的var app=angular.module('app',[])//

    html 中的<body ng-app="app">//

  3. 接下来,在应用程序中注册您的控制器,并通过所有必要的注射

    app.controller('myCtrl',function(){});

  4. 调用html文件中的javascript文件

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

您必须定义您的控制器

var app = angular.module('app', []);
app.controller('Ctrl', ['$scope',function($scope) {
  $scope.age = 24;
}]);

确保ng-app="app_name"定义必须与匹配

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

<html ng-app="myApp">
<body>
  <div ng-controller="Ctrl">
      <input ng-model="name">
      <h1>{{name}}</h1>
      <h2>{{age}}</h2>
  </div>
  <script>
    var app = angular.module('myApp',[]); // same to the above define appName
    app.controller('Ctrl',function($scope){
      $scope.age=24; // initialize age by injecting scope
    });
  </script>
</body>
<html>

有关更多详细信息,请访问此处

  1. 检查html文件中angularjs的版本
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.6/angular.min.js"></script>
  1. 在HTML文件中调用javascript文件
<script src="app.js"></script>