Angularfire Uncaught ReferenceError: Firebase is not defined

Angularfire Uncaught ReferenceError: Firebase is not defined

我正在按照示例开始使用 Firebase 和 Angular - Firecasts #4,我不断得到:

Uncaught ReferenceError: Firebase is not defined.

有什么想法吗?

这是我的 app.js:

    angular
    .module('app', ['ngRoute', 'firebase'])
    .constant('FirebaseUrl', 'https://<my-app>.firebaseio.com/')
    .service('rootRef', ['FirebaseUrl', Firebase])
    .service('users', Users)
    .controller('MyCtrl', MyController)
    .config(ApplicationConfig);

function ApplicationConfig($routeProvider) {
    $routeProvider.when('/', {
        controller: 'MyCtrl as ctrl',
        templateUrl: 'views/myctrl.html'
    });
}

function Users(rootRef, $firebaseObject, $firebaseArray) {
    var usersRef = rootRef.child('users');
    this.get = function get(id) {
        return $firebaseObject(usersRef.child(id));
    };

    this.all = function all() {
        return $firebaseArray(usersRef);
    };
}

function MyController(users) {
    this.users = users.all();
}

这是我的 index.html:

<!DOCTYPE html>
    <html lang="en" ng-app="app">
     <head>
    <meta charset="UTF-8">
    <title>AngularFire</title>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/firebase/firebase.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="bower_components/angularfire/dist/angularfire.js"></script>
    <script src="app.js"></script>
</head>
<body>
    <ng-view></ng-view>
</body>
</html>

您需要插入:

var rootRef = new Firebase('https://<my-app>.firebase.io.com');

MyController 内部,如 所示。

评论员解释说 Firebase 作为 "Firebase constructor function."

注入到控制器中

'FirebaseUrl' 就是上面在 .constant.

里面定义的 url

他的解释非常快,但无论哪种方式,您都需要那行代码来帮助定义引用。

如果有人有更多见解,请对此 post 进行编辑或评论。

看来您使用的是新版本的 firebase。继续像这里所说的那样重写这个例子:https://firebase.google.com/support/guides/firebase-web#monitor_authentication_state_numbered

您需要第 4 点:"In the new SDKs, you no longer instantiate a database references via new Firebase. Instead, you will initialize the SDK via firebase.initializeApp()..."

我将此添加为使用 link 的答案:new docs

正如 Boas Babs 所说,新版本使用不同的方法来获取数据库引用。

app.controller("SampleCtrl", function($scope, $firebaseObject) {
  var ref = firebase.database().ref();

  // download the data into a local object
  $scope.data = $firebaseObject(ref);
});