当前位置: 首页 > 面试题库 >

AngularJS:未捕获的错误:[$ injector:modulerr]无法实例化模块?

萧修永
2023-03-14
问题内容

我是AngularJS的新手,并且通过一些文档和教程来学习。我的问题是参考Egghead的视频系列,尤其是该视频,该视频演示了如何组合基本的搜索过滤器。我想在一个真正的应用中使用此应用,我正在为一家从事蜡烛业务的小朋友打造,但是当我将其修改为她的蜡烛而不是复仇者联盟的演员(如视频中的演示)时,出现此错误:

未捕获的错误:[$ injector:modulerr]由于以下原因,无法实例化模块myApp:

错误:[$ injector:nomod]模块’myApp’不可用! 您可能拼错了模块名称,或者忘记了加载它。如果注册模块,请确保指定…

我将视频演示中的精确版本(数组中只有3个演员)复制到jsfiddle中,发现它仍然产生相同的错误。(作为参考,Egghead演示在这里:http : //www.thinkster.io/angularjs/ET1iee6rnm/angularjs-
ngfilter
)。到目前为止,我已经在该网站上阅读了至少六个类似的问题,并尝试了所有提供的解决方案,但是没有一个解决这个错误或导致“复仇者联盟”搜索-
在视频演示中运行良好-可以正常运行正确地。

HTML:

<div ng-app="myApp">
    <div ng-controller="AvengersCtrl">
        <input type="text" ng-model="search.$" />
        <table>
            <tr ng-repeat="actor in avengers.cast | filter:search">
                <td>{{actor.name}}</td>
                <td>{{actor.character}}</td>
            </tr>
        </table>
    </div>
</div>

Javascript:

var myApp = angular.module('myApp', []);
myApp.factory('Avengers', function () {
    var Avengers = {};
    Avengers.cast = [
        {
        name: "Robert Downey Jr.",
        character: "Tony Stark / Iron Man"
        }, 
        {
        name: "Chris Evans",
        character: "Steve Rogers / Captain America"
        },
        {
        name: "Mark Buffalo",
        character: "Bruce Banner / The Hulk"
        }
    ];
    return Avengers;
})

function AvengersCtrl($scope, Avengers) {
    $scope.avengers = Avengers;
}

简而言之,有人可以提供一种可以解决该错误的解决方案,并且可以用简单的英语(不是博士级别的“ Angular
Obscurese”)进行解释(简而言之)是什么原因以及需要做什么的。做了避免吗?

编辑:抱歉,但是上面从教程中引用的jsfiddle链接不再有效。我已经删除了断开的链接。提到的教程仍然可供查看。


问题答案:

尝试在小提琴中使用 无包裹-头戴无包裹-身体

工作提琴:http :
//jsfiddle.net/Q5hd6/

说明

DOM 完全加载后, Angular开始编译DOM
。您注册要运行的代码onLoad(小提琴中的onload选项)=>现在注册myApp模块已为时已晚,因为angular开始编译DOM,而angular看到没有命名的模块myApp并抛出异常。

通过使用 No Wrap-In Head ,您的代码如下所示:

<head>

    <script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js'></script>

    <script type='text/javascript'>
      //Your script.
    </script>

</head>

您的脚本有机会在angular开始编译DOM之前运行,并且angular开始编译DOM myApp时已经创建了模块。



 类似资料:
  • 问题内容: 我在Angular JS接收错误时遇到问题:未捕获的错误:[$ injector:modulerr]。我的JS文件外观 我还包括了angular-route-js Angular文档说问题出在http://docs.angularjs.org/api/ngRoute 问题答案: 尝试添加以下内容:

  • 问题内容: 我正在学习Angular.js,但无法弄清楚此简单代码有什么问题。看起来不错,但出现以下错误。 在添加之前(我只是保持原样),它给了我以下错误。这是为什么? 问题答案: 禁用AngularJS 1.3版全局控制器功能声明后 您需要首先创建一个AngularJS模块,然后将所有组件附加到该特定模块。 码 专门针对您的情况,AngularJS存在一些问题 (将其降级为 正常)。虽然我希望您

  • 在将maven项目导入到Eclipse Luna之后,在修改方法后保存时,弹出窗口中会显示以下错误: 无法初始化模块TreeWalker-无法实例化JUnitTestCase

  • 问题内容: 我遇到以下错误,根本原因是 模块’ngRoute’不可用 未捕获的错误:[$ injector:modulerr]由于以下原因,无法实例化模块Amail: 错误:[$ injector:modulerr]由于以下原因,无法实例化模块ngRoute: 错误:[$ injector:nomod]模块’ngRoute’不可用!您可能拼错了模块名称,或者忘记了加载它。如果注册模块,请确保将依赖

  • 问题内容: 当使用angular 1.2代替1.07时,以下代码不再有效,为什么? 问题出在喷射器配置部分(app.config)中: 如果我没记错的话,这个问题是从1.1.6开始的。 问题答案: 该问题是由于缺少ngRoute模块的包含引起的。从1.1.6版开始,它是一个单独的部分:

  • 我的代码怎么了 帕西恩视图- 控制器- 注意:未定义的索引:psn在C:\xampp\htdocs\hamil\app\view\pasien\index.php行202 警告:在第202行的C:\xampp\htdocs\bunil\app\view\pasien\index.php中为Foreach()提供的参数无效 致命错误:未捕获错误:调用C:\xampp\htdocs\bumil\app