AngularJS 1.2 $ injector:modulerr


445

1.07の代わりに角度1.2を使用すると、次のコードは無効になります。なぜですか?

'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) 

私が正しく覚えているなら、この問題はangular 1.1.6から始まった。

回答:


636

この問題は、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']);

492
あなたは、モジュールが不足しているかわからない場合、読み込み可能なエラーメッセージを与える縮小さないangular.jsを使用:"Error: [$injector:nomod] Module 'ngRoute' 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."
Martの

2
うーん、私はbowerを使用しており、.mapファイルを提供しています-なぜChromeが縮小されたファイルのエラーをまだ表示していたのでしょうか。頭を上げてくれてありがとう、@マート!
Aditya MP

5
@ arg20、あなたはここで答えを見つけるでしょう:github.com/angular/angular.js/commit/...
ローラン

4
聖なる牛私はどこでもこれの解決策を探していました。1.0から1.2にアップグレードしたところ、このエラーが発生しました。私が見つけた唯一のアドバイスは、angular-route.jsが含まれていることを確認することです。これは、Angularドキュメントのファンではありませんでした。とにかくありがとうございました!私は賛成票を投じました。
RachelD 2013年

4
モジュールの定義中にangular.module( 'myModule'、[])の代わりにangular.module( 'myModule')を使用すると、このエラーが発生する可能性があります。stackoverflow.com/questions/16260538/...
Anirudhan J

42

最後にこの '()'を追加するとエラーが消えました

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

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

40

これがリストに追加するもう1つのことは、「エラー:[$ injector:modulerr] angular」のグーグル検索で生じる最初の結果です:

'index'html'とメインのJavaScriptアプリ定義でアプリ名が一致しない場合も、このエラーが発生する可能性があります。

たとえば、HTMLが次のようになっているとします。

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

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

        etc ...

そして、JavaScriptは次のようになります(つまり、アプリ名にタイプミスがあります-myWebSiteの代わりにmyWebCite):

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

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

次に、「Error:[$ injector:modulerr] angular」エラーも生成されます。


私はこれに非常に近かった。私はng-app = "app" ...を設定しましたが、モジュールを設定していません。したがって、エラーが発生していました。初心者として、サンプルコードを機能させるために= "app"の部分を削除しました。その後、適切なモジュールとルーティングをセットアップします... :)
Eric Burdo

25

noobエラーは、モジュールjsを含めることを忘れている可能性があります

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

index.html内のファイル


24
デバッグ/エラーメッセージの角度が非常に悪いです。
K-SOの毒性が高まっています。

3
笑。私は自分に言いました、いいえ、この単純な間違いを犯すことはできません。そして、私はあなたの答えを何度も渡しました。しかし、それは私の問題を解決しました。
モーベ2017

これは、いくつかの輸入行方不明についてです
famas23

13

ファイルを圧縮、バンドル、および縮小するフレームワークを使用している場合は、これらのフレームワークが変数の名前を変更する傾向があるため、各依存関係を明示的に定義してください。これは、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の詳細については、こちらをご覧ください


12

コンソール([$injector:nomod], MINERR_ASSET:22)でこのエラーが発生した場合は、ロードする前にアプリケーションコードが含まれていないことを確認してくださいAngularJS

私はそれをしていました、そして私が注文を修正したら、エラーは消えました。


9

私は同じエラーを経験しましたが、私の場合、それはangular.module欠落している2番目のパラメータが原因でした-うまくいけば、これは同じ問題を持つ誰かを助けるかもしれません。

angular.module('MyApp');

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


1
これは私の問題でした。angular.module( 'my.Namespace'、[]);の宣言がありませんでした使用する前にangular.module( 'my.Namespace')を指令( 'myDirective'、[...。
ScottFoster1000


6

私は同じ問題を抱えており、可能な解決策をすべて試しました。しかし、ついにドキュメントから、ngRouteモジュールが分離されたことがわかりました。このリンクをご覧ください

解決策:angular.min.jsスクリプトの後に cdn 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>

5

このエラーの別のトリガーは、「。」を残すことです。ルート定義の「そうでなければ」またはその他のルートの前に出ます:

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

フルストップでさらに悪化した。お奨めJSが大好き!


4

以下の回答に加えて、コンソール([$injector:nomod]MINERR_ASSET:22)でこのエラーが発生したが、すべてが正常に動作しているように見える場合は、、index.htmlに重複したインクルード。

このエラーは、ファイルのインクルードが重複している場合にも発生する可能性があるため、このモジュールを使用し、実際のモジュール宣言を含むファイルの前にインクルードされます。


3

angularjsの公式チュートリアルを通過した場合https://docs.angularjs.org/tutorial/step_07

注:AngularJSバージョン1.2以降、ngRouteは独自のモジュールに含まれており、上記のBowerからダウンロードした追加のangular-route.jsファイルをロードしてロードする必要があります。

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 eg bower install angular-route @ XYZ code.angularjs.org例 "//code.angularjs.org/XYZ/ angular-route.js "ここで、XYZは実行しているAngularJSバージョンです。

次に、モジュールを依存モジュールとして追加して、アプリケーションにロードします。

angular.module( 'app'、['ngRoute']); これで準備が整いました!


2

John Papaは、このあいまいなコメントについて私の問題を提供しました。そのエラーが発生した場合、ファイルが見つからないことを意味することがあります。それ以外の場合は、使用後にモジュールが定義されたことを意味します。これを簡単に解決する1つの方法は、モジュールファイルに* .module.jsという名前を付けて、それらを最初にロードすることです。


0

私の問題はconfig.xmlにありました。変化:

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

<access origin="*"/>

修正しました。


0

そのインジェクターエラー。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


0

プロジェクトを切り替えて、同じポートでプロジェクトを順番に実行しているときに、このエラーが発生することがあります。その場合は、chrome Developer Tools> Networkに移動して、実際に書き込まれたjsファイルで次のことを確認してくださいif the file match with the workspce。これを解決するにはDisable Cache、ネットワークの下を選択します。


0

数か月後、私はAngularJS(1.6.4)アプリの開発に戻り、開発中のテスト用にChrome(PC)とSafari(MAC)を選択しました。このコードは、この提示エラー:$インジェクター:modulerrのモジュールエラーIE 11.0.9600(Windows 7の32ビットを)。

調査の結果、エラーはforEachループが使用されていることが原因であることが判明し、すべてのforEachループを通常のforループに置き換えただけで、そのまま動作します...

これは基本的にはAngularJSの問題ではなくIE11の問題(ここで回答)でしたが、発生した例外はAngularJSの例外だったので、ここにこの返信を入れておきます。それが私たちの一部を助けることを願っています。

同様に。ラムダ関数を使用しないでください...()=> {...}を適切なol 'function(){...}に置き換えてください


0

私はこの問題を抱えていて、コードを1行ずつチェックした後、これを見ました

 <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>

そしてそれは働いた。タグを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.