Ошибка AngularJS: модуль «ngResource» недоступен! Вы либо неправильно написали имя модуля, либо забыли его загрузить

Я пытаюсь сделать вызов службы из angular js. Я скачал проект angular seed. И внутри 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.

person iJade    schedule 12.10.2014    source источник
comment
попробуй ['Entry',function(Entry) {   -  person Khanh TO    schedule 12.10.2014
comment
ну, похоже, выдает еще одну ошибку Error: [$injector:unpr] Unknown provider: $resourceProvider <- $resource <- Entry   -  person iJade    schedule 12.10.2014
comment
добавить ngResource к angular.module('myApp.view1', ['ngRoute','ngResource'])   -  person Khanh TO    schedule 12.10.2014
comment
Можете ли вы включить HTML-код в вопрос.   -  person Arun Ghosh    schedule 12.10.2014
comment
Попробуйте angular.module('myApp', ['ngRoute','ngResource'])   -  person Arun Ghosh    schedule 12.10.2014
comment
@ArunGhosh, спасибо, у меня все заработало ... на самом деле это была орфографическая ошибка в app.js :)   -  person iJade    schedule 12.10.2014


Ответы (3)


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

должно быть:

<script src="bower_components/angular-resource/angular-resource.js"></script>
person JStark    schedule 11.02.2015

Единственное, что имеет смысл, это то, что файл angular-resource.js не загружен должным образом, можете ли вы взглянуть на вкладку сети и посмотреть, какой файл на самом деле загружен и как называется модуль? чтобы убедиться, что вы ввели его правильно.

(Извините, что не комментирую, пока недостаточно представителей).

person PiniH    schedule 12.10.2014

Вам не хватает списка зависимостей.

Если вы передаете массив как зависимость для внедрения, вам нужно указать angular.

['Entry', function (Entry) { }]; должно помочь, или просто сделайте function (Entry) { }.

причина, по которой Entry не определена, заключается в том, что angular не знает, что вам нужно ввести (вы передаете нотацию массива в систему углового DI)

пс: извините за плохой английский

person sendy halim    schedule 12.10.2014
comment
@iJay извините за поздний ответ, я вижу <script src="angular-resource.js"></script> это правильный путь? потому что большая часть пути angularjs в вашем html, похоже, находится в каталоге bower_components :) - person sendy halim; 12.10.2014