【问题标题】:AngularJS:Uncaught Error: [$injector:modulerr]AngularJS:未捕获的错误:[$injector:modulerr]
【发布时间】:2014-02-25 11:25:39
【问题描述】:

我正在尝试在 http://angularjs.org 上给出的名为 Wire up a Backend 的 AngularJS 示例。
我已经在我的机器上复制了代码并保存了文件。
在执行 index.html 时,
Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.13/$injector/modulerr?p0=project&p1=Error%3…gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.13%2Fangular.min.js%3A17%3A431)
控制台上显示错误。
任何帮助将不胜感激。
以下是代码。

index.html

<!doctype html>
<html ng-app="project">
<head>
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-resource.min.js">
</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular-route.min.js">
</script>
<script src="https://cdn.firebase.com/v0/firebase.js"></script>
<script src="https://cdn.firebase.com/libs/angularfire/0.5.0/angularfire.min.js"></script>
<script src="project.js"></script>
</head>
<body>
  <h2>JavaScript Projects</h2>
  <div ng-view></div>
</body>
</html>  

project.js

angular.module('project', ['ngRoute', 'firebase'])
.value('fbURL', 'https://angularjs-projects.firebaseio.com/')

.factory('Projects', function($firebase, fbURL) {
return $firebase(new Firebase(fbURL));
})

.config(function($routeProvider) {
$routeProvider
.when('/', {
  controller:'ListCtrl',
  templateUrl:'list.html'
})
.when('/edit/:projectId', {
  controller:'EditCtrl',
  templateUrl:'detail.html'
})
.when('/new', {
  controller:'CreateCtrl',
  templateUrl:'detail.html'
})
.otherwise({
  redirectTo:'/'
});
})

.controller('ListCtrl', function($scope, Projects) {
$scope.projects = Projects;
})

.controller('CreateCtrl', function($scope, $location, $timeout, Projects) {
 $scope.save = function() {
 Projects.$add($scope.project, function() {
  $timeout(function() { $location.path('/'); });
 });
 };
 })

 .controller('EditCtrl',
 function($scope, $location, $routeParams, $firebase, fbURL) {
 var projectUrl = fbURL + $routeParams.projectId;
 $scope.project = $firebase(new Firebase(projectUrl));

$scope.destroy = function() {
  $scope.project.$remove();
  $location.path('/');
};

$scope.save = function() {
  $scope.project.$save();
  $location.path('/');
};
});

list.html

<input type="text" ng-model="search" class="search-query" placeholder="Search">
<table>
<thead>
<tr>
<th>Project</th>
<th>Description</th>
<th><a href="#/new"><i class="icon-plus-sign"></i></a></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="project in projects | orderByPriority | filter:search | orderBy:'name'">
<td><a href="{{project.site}}" target="_blank">{{project.name}}</a></td>
<td>{{project.description}}</td>
<td>
<a href="#/edit/{{project.$id}}"><i class="icon-pencil"></i></a>
</td>
</tr>
</tbody>
</table>

detail.html

<form name="myForm">
<div class="control-group" ng-class="{error: myForm.name.$invalid &&   !myForm.name.$pristine}">
<label>Name</label>
<input type="text" name="name" ng-model="project.name" required>
<span ng-show="myForm.name.$error.required && !myForm.name.$pristine" class="help-inline">Required {{myForm.name.$pristine}}</span>
</div>
<div class="control-group" ng-class="{error: myForm.site.$invalid && !myForm.site.$pristine}">
<label>Website</label>
<input type="url" name="site" ng-model="project.site" required>
<span ng-show="myForm.site.$error.required && !myForm.name.$pristine" class="help-inline">Required</span>
<span ng-show="myForm.site.$error.url" class="help-inline">
    Not a URL</span>
</div>

<label>Description</label>
<textarea name="description" ng-model="project.description"></textarea>

<br>
<a href="#/" class="btn">Cancel</a>
<button ng-click="save()" ng-disabled="myForm.$invalid"
      class="btn btn-primary">Save</button>
 <button ng-click="destroy()"
      ng-show="project.$remove" class="btn btn-danger">Delete</button>
</form>

【问题讨论】:

  • 错误说明了什么?
  • 未捕获的错误:[$injector:modulerr] errors.angularjs.org/1.2.13/$injector/…...gleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.2.13%2Fangular.min.js%3A17%3A431)
  • 你能不能为它制作一个小提琴
  • 很抱歉,它可以在 jsfiddle 上运行,但不能在机器上运行。
  • 就这些了吗?通常在路径后有​​一条消息......至少在 chrome 中

标签: javascript angularjs


【解决方案1】:

我认为你的$resource 实例Project 有问题,它既没有注入module('project', ['ngRoute', 'firebase']) 也没有创​​建.factory('Projects')

所以我认为你需要像下面这样的东西:

angular.module('project', ['ngRoute', 'firebase'])
    .factory('Projects', function($resource) {
        return $resource('url:id',
        {
            id: "@id"
        });
    })  

或创建一个新模块并包含在['ngRoute', 'firebase']

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 2016-05-09
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多