Firebase ReferenceError:未定义Firebase

时间:2017-02-14 22:32:19

标签: angularjs firebase firebase-realtime-database angularfire

我正在使用一个使用样板Angular-seed和Firebase的Angular教程。我得到的错误是:ReferenceError: Firebase is not defined

这是我的 contact.js ,其中引用了我的错误:

'use strict';

angular.module('myContacts.contacts', ['ngRoute','firebase'])

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/contacts', {
    templateUrl: 'contacts/contacts.html',
    controller: 'ContactsCtrl'
  });
}])

// Contacts Controller
.controller('ContactsCtrl', ['$scope', '$firebaseArray', function($scope, $firebaseArray) {
    // Init Firebase
    var ref = new Firebase('https://mycontacts-app.firebaseio.com/contacts');

    // get Contacts
    $scope.contacts = $firebaseArray(ref);
    console.log($scope.contacts);


}]);

这是我的 app.js

'use strict';

// Declare app level module which depends on views, and components
angular.module('myContacts', [
  'ngRoute',
  'firebase',
  'myContacts.contacts'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix('!');

  $routeProvider.otherwise({redirectTo: '/contacts'});
}]);

这是我的 index.html

<!DOCTYPE html>
<!--[if lt IE 7]>      <html lang="en" ng-app="myContacts" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html lang="en" ng-app="myContacts" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html lang="en" ng-app="myContacts" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" ng-app="myContacts" class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>MyContacts App</title>
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="bower_components/foundation/css/foundation.css">
  <link rel="stylesheet" href="app.css">

</head>
<body>
  <div class="container">
    <div class="row">
      <div class="large-12 columns">
        <h1>myContacts</h1>
        <hr>
      </div>
    </div>
    <div ng-view></div>
  </div>

  <!--[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]-->

  <!-- In production use:
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
  -->
  <script src="bower_components/jquery/dist/jquery.js"></script>
  <script src="bower_components/angular/angular.js"></script>
  <script src="bower_components/angular-route/angular-route.js"></script>
  <script src="bower_components/firebase/firebase.js"></script>
  <script src="bower_components/angularfire/dist/angularfire.js"></script>
  <script src="bower_components/foundation/js/foundation.js"></script>
  <script src="app.js"></script>
  <script src="contacts/contacts.js"></script>
</body>
</html>

这是我的 contact.html

<div class="row" ng-controller="ContactsCtrl">
  <div class="large-10 columns">
    <h3>Your Contacts</h3>
    <table>
      <thead>
        <tr>
          <th width="200px">Name</th>
          <th width="200px">Company</th>
          <th width="25%">Email</th>
          <th width="25%">Actions</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><a href="#">John Doe</a></td>
          <td>Some Company</td>
          <td>sothing@something.com</td>
          <td><a href="#" class="button tiny">Edit</a>
             <a href="#" class="button tiny alert">Delete</a></td>
        </tr>
      </tbody>
    </table>

  </div>
  <div class="small-12 large-2 columns">
    <a href="#" class="button large">+</a>
  </div>
</div>

这些是我从样板角度种子中改变的所有文件。如果有人可以提供帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您正在查看过时的教程。使用新版本的Firebase,情况会有所改变。

这样的事情:

var app = angular.module('app', ['firebase']);
app.controller('Ctrl', function($scope, $firebaseArray) {

    var config = {
        apiKey: "***",
        authDomain: "***.firebaseapp.com",
        databaseURL: "https://***.firebaseio.com",
        storageBucket: "***.appspot.com",
        messagingSenderId: "***"
    };
    firebase.initializeApp(config);

    var ref = firebase.database().ref().child("contacts");
    $scope.contacts = $firebaseArray(ref);
    ...
});

改为:

{{1}}

当然,您需要将 firebase.js angularfire.js 添加到您的 index.html 中,但您已经这样做了。

我不确定你是否只想从数据库中读取数据或更多内容,但我认为这个例子已经足够了。在尝试从教程(尤其是旧教程)中实现某些内容之前,请先尝试阅读official documentation。在Web开发领域,变化非常频繁。