web-dev-qa-db-ja.com

AngularJSエラー:モジュール 'ngResource'は利用できません!モジュール名のスペルを間違えたか、ロードするのを忘れました

angular js。私は angular seed project をダウンロードしました。そしてview1.js内に次のコードを記述して呼び出します。サービス:

'use strict';

angular.module('myApp.view1', ['ngRoute','ngResource'])

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view1', {
    templateUrl: 'view1/view1.html',
    controller: 'View1Ctrl'
  });
}])
.factory('Entry', ['$resource',function($resource) {
  return $resource('http://localhost:8000/emp/'); // Note the full endpoint address
}])
.controller('View1Ctrl', ['Entry',function(Entry) {
  var entries = Entry.query(function() {
    console.log(entries);
  });
}]);

必要なスクリプトを含めたindex.htmlは次のとおりです。

    <!DOCTYPE html>
<!--[if lt IE 7]>      <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html lang="en" ng-app="myApp" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" ng-app="myApp" class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  <title>My AngularJS App</title>
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="bower_components/html5-boilerplate/css/normalize.css">
  <link rel="stylesheet" href="bower_components/html5-boilerplate/css/main.css">
  <link rel="stylesheet" href="app.css">
  <script src="bower_components/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js"></script>
</head>
<body>
  <ul class="menu">
    <li><a href="#/view1">view1</a></li>
    <li><a href="#/view2">view2</a></li>
  </ul>

  <!--[if lt IE 7]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
  <![endif]-->

  <div ng-view></div>

  <div>Angular seed app: v<span app-version></span></div>

  <!-- In production use:
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
  -->
  <script src="bower_components/angular/angular.js"></script>
  <script src="bower_components/angular-route/angular-route.js"></script>
  <script src="angular-resource.js"></script>
  <script src="app.js"></script>
  <script src="view1/view1.js"></script>
  <script src="view2/view2.js"></script>
  <script src="components/version/version.js"></script>
  <script src="components/version/version-directive.js"></script>
  <script src="components/version/interpolate-filter.js"></script>
</body>
</html>

ただし、アプリを実行すると、ブラウザコンソールに次のエラーが表示されます。

    Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module myApp.view1 due to:
Error: [$injector:modulerr] Failed to instantiate module ngResource due to:
Error: [$injector:nomod] Module 'ngResource' 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.
7
iJade
<script src="angular-resource.js"></script>

する必要があります:

<script src="bower_components/angular-resource/angular-resource.js"></script>
9
JStark

唯一理にかなっているのは、angular-resource.jsファイルが正しくロードされていないことです。ネットワークタブを見て、実際にロードされているファイルとモジュールの名前を確認できますか?正しく入力したことを確認します。

(コメントしなくてすみません、まだ十分な担当者がいません)。

1
PiniH

依存関係リストがありません。

注入する依存関係として配列を渡す場合は、角度を指定する必要があります。

['Entry', function (Entry) { }];でうまくいくか、function (Entry) { }を実行するだけです。

Entryが定義されていない理由は、angularが何を注入する必要があるかを知らないためです(配列表記をAngularのDIシステムに渡します)

ps:悪い英語を求めて

0
sendy halim