AngularJS 1.2 $ injector:modulerr

2020/09/27 06:01 · javascript ·  · 0评论

当使用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) 

如果我没记错的话,这个问题是从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']);

我的错误通过在末尾添加此'()'而消失

(function(){
    var home = angular.module('home',[]);

    home.controller('QuestionsController',function(){
        console.log("controller initialized");
        this.addPoll = function(){
            console.log("inside function");
        };
    });
})();

还有一件要添加到列表中的事情,因为这是Google搜索“错误:[$ injector:modulerr]角”的第一个结果:

如果您在'index'html'中的应用名称与主要javascript应用定义中的应用名称不匹配,这也会产生此错误。

例如,如果您的HTML如下所示:

    </head>
    <body ng-app="myWebSite">

        <!-- My Web Site -->
        <p>About my web site...</p>

        etc ...

您的JavaScript看起来像这样(即,应用名称上有错别字-myWebCite而不是myWebSite):

/** Main AngularJS Web Application */ 
var app = angular.module('myWebCite', [ 'ngRoute' ]); 

/** Configure the Routes */ 
app.config(['$routeProvider', function ($routeProvider) { 
  etc ...

那么也会生成“错误:[$ injector:modulerr]角度错误”错误。

一个菜鸟错误可能会忘记包括模块js

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

完全在index.html中的文件

对于那些使用压缩,捆绑和缩小文件框架的人,请确保您明确定义每个依赖项,因为这些框架倾向于重命名变量。在使用ASP.NET BundleConfig.cs将我的应用程序脚本捆绑在一起时,这发生在我身上

之前

app.config(function($routeProvider) {
    $routeProvider.
      when('/', {
          templateUrl: 'list.html',
          controller: 'ListController'
      }).
      when('/items/:itemId', {
          templateUrl: 'details.html',
          controller: 'DetailsController'
      }).
      otherwise({
          redirectTo: '/'
      });
});

app.config(["$routeProvider", function($routeProvider) {
    $routeProvider.
      when('/', {
          templateUrl: 'list.html',
          controller: 'ListController'
      }).
      when('/items/:itemId', {
          templateUrl: 'details.html',
          controller: 'DetailsController'
      }).
      otherwise({
          redirectTo: '/'
      });
}]);

在此处阅读有关Angular Dependency Annotation的更多信息。

如果您在控制台中遇到此错误([$injector:nomod], MINERR_ASSET:22),请确保在加载之前不包括应用程序代码AngularJS

我这样做了,确定订单后,错误就消失了。

我刚刚遇到了相同的错误,在我的情况下,它是由angular.module缺少第二个参数引起的-希望这可以帮助遇到相同问题的人。

angular.module('MyApp');

angular.module('MyApp', []);

add to link
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.0/angular-route.min.js"></script>

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

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

解决方案:
添加CDN
angular.min.js脚本之后 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>

此错误的另一个触发因素是保留“”。在您的“其他”路线或路线定义中的任何其他路线之前:

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

由句号修饰,再次出现。要爱JS!

除了下面的答案,如果你有控制台这个错误([$injector:nomod]MINERR_ASSET:22),但一切似乎做工精细,确保你没有重复的包含您的index.html。

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

如果您阅读angularjs的官方教程https://docs.angularjs.org/tutorial/step_07

注意:从AngularJS 1.2版开始,ngRoute在其自己的模块中,必须通过加载其他的angular-route.js文件来加载,该文件我们通过上面的Bower下载。

另外请注意ngRoute api https://docs.angularjs.org/api/ngRoute

安装首先在HTML中包含angular-route.js:

您可以从以下位置下载此文件:

Google CDN,例如//ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-route.js Bower,例如bower install angular-route @ XYZ code.angularjs.org,例如“ //code.angularjs.org/XYZ/ angular-route.js”,其中XYZ是您正在运行的AngularJS版本。

然后通过将模块添加为依赖模块来将其加载到应用程序中:

angular.module('app',['ngRoute']); 这样,您就可以开始了!

约翰·帕帕(John Papa)针对这个晦涩难懂的评论提供了我的问题:有时,当您收到该错误时,表明您缺少文件。其他时候,这意味着模块是在使用后定义的。轻松解决此问题的一种方法是命名模块文件* .module.js并首先加载它们。

我的问题是在config.xml中。变更:

<access origin="*" launch-external="yes"/>

<access origin="*"/>

修复。

它是喷油器错误。您可能使用了很多JavaScript文件,因此可能缺少注入器。

一些在这里:

var app = angular.module('app', 
    ['ngSanitize', 'ui.router', 'pascalprecht.translate', 'ngResource', 
     'ngMaterial', 'angularMoment','md.data.table', 'angularFileUpload', 
     'ngMessages', 'ui.utils.masks', 'angular-sortable-view',          
     'mdPickers','ngDraggable','as.sortable', 'ngAnimate', 'ngTouch']
);

请检查您需要插入进样器的进样器 app.js

有时,当您在项目之间切换并在一个端口上一个接一个地运行项目时,我已经看到了此错误。在这种情况下转到Chrome开发者工具>网络,并尝试检查实际写入js文件为:if the file match with the workspce要解决此问题,请Disable Cache在“网络”下选择

几个月后,我返回开发AngularJS(1.6.4)应用程序,为此我选择了Chrome(PC)和Safari(MAC)进行开发期间的测试。这段代码显示了此错误:IE 11.0.9600上的$ injector:modulerr模块错误(Windows位)

经调查,很明显该错误是由于使用了forEach循环,仅用正常的for替换了所有的forEach循环循环,以使事情按原样工作...

基本上是IE11问题(在此处回答),而不是AngularJS问题,但是我想将这个答复放在这里,因为引发的异常是AngularJS异常。希望它能对我们中的某些人有所帮助。

同样。不要使用lambda函数...只需将()=> {...}替换为良好的ol'function(){...}

我遇到了这个问题,在逐行检查代码后,我看到了

 <textarea class="form-control" type="text" ng-model="WallDesc" placeholder="Enter Your Description"/>

我只是将其更改为

     <textarea class="form-control" type="text" ng-model="WallDesc" placeholder="Enter Your Description"></textarea>

并且有效。因此,请检查您的标签。

本文地址:http://javascript.askforanswer.com/angularjs-1-2-injectormodulerr.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!