web-dev-qa-db-ja.com

Firebaseが定義されていませんか?

AngularプロジェクトでFirebaseを使用していますが、ReferenceError: Firebase is not definedでエラーが発生していますが、理由がわかりません。

enter image description here

これは私のindex.htmlです

<!DOCTYPE html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  <title>My Contacts App</title>
  <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>
  <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.js

'use strict';

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

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

.controller('ContactsCtrl', ['$scope', '$firebaseArray', function($scope, $firebaseArray) {
  var ref = new Firebase('https://<my_project_name>.firebaseio.com/contacts');

  $scope.contacts = $firebaseArray(ref);
  console.log($scope.contacts);
}]);

私のapp.js

'use strict';

angular.module('myContacts', [
  'ngRoute',
  'firebase',
  'myContacts.contacts'
]).
config(['$routeProvider', function($routeProvider) {

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

と私のpackage.json

{
  "name": "angular-seed",
  "private": true,
  "version": "0.0.0",
  "description": "A starter project for AngularJS",
  "repository": "https://github.com/angular/angular-seed",
  "license": "MIT",
  "devDependencies": {
    "bower": "^1.7.7",
    "http-server": "^0.9.0",
    "jasmine-core": "^2.4.1",
    "karma": "^0.13.22",
    "karma-chrome-launcher": "^0.2.3",
    "karma-firefox-launcher": "^0.1.7",
    "karma-jasmine": "^0.3.8",
    "karma-junit-reporter": "^0.4.1",
    "protractor": "^3.2.2",
    "shelljs": "^0.6.0",
    "firebase": "*"
  },
  "scripts": {
    "postinstall": "bower install",

    "prestart": "npm install",
    "start": "http-server -a localhost -p 8000 -c-1 ./app",

    "pretest": "npm install",
    "test": "karma start karma.conf.js",
    "test-single-run": "karma start karma.conf.js --single-run",

    "preupdate-webdriver": "npm install",
    "update-webdriver": "webdriver-manager update",

    "preprotractor": "npm run update-webdriver",
    "protractor": "protractor e2e-tests/protractor.conf.js",

    "update-index-async": "node -e \"require('shelljs/global'); sed('-i', /\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/, '//@@NG_LOADER_START@@\\n' + sed(/sourceMappingURL=angular-loader.min.js.map/,'sourceMappingURL=bower_components/angular-loader/angular-loader.min.js.map','app/bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@', 'app/index-async.html');\""
  }
}

「*」を割り当てたfirebaseのpackage.jsonファイルで、それができるかどうかわかりませんか?他のすべてがよさそうだ...

コンソールからのfirebase

これはbower.jsonファイルです

{
  "name": "angular-seed",
  "description": "A starter project for AngularJS",
  "version": "0.0.0",
  "homepage": "https://github.com/angular/angular-seed",
  "license": "MIT",
  "private": true,
  "dependencies": {
    "angular": "~1.5.0",
    "angular-route": "~1.5.0",
    "angular-loader": "~1.5.0",
    "angular-mocks": "~1.5.0",
    "html5-boilerplate": "^5.3.0"
  }
}

firebaseを提供する必要があるかどうか。

6
sanja

同じ問題がありました..ひどい経験..

最終的に、これを見つけました: https://firebase.google.com/support/guides/firebase-web

enter image description here

5
guy mograbi

他の人が言及しているように、Firebaseコンストラクターで動作しない最新バージョンのFirebase(3以降)を入手しています ドキュメントはこちらpackage.jsonfirebase: "*"を追加したので取得できます

他の人が提案したように、Firebaseでの作業を行う前に初期化する必要があります。これは、グローバルな場所、または構成ブロック(角度)のどこかにある可能性があります。初期化後、を使用してデータベース参照を取得できます

var rootRef = firebase.database().ref();

新しいFirebaseバージョンでは、互換性のあるAngularFireバージョンを使用する必要があるため、2より上である必要があります(バージョン管理がわかりにくい)。ドキュメントは GitHub page にあります。 。

package.jsonにもbower.jsonにもAngularFireがまったく表示されませんでしたが、Firebase 3.x.xを使用している場合は、AngularFire2.x.xが必要になります

2
idan

"firebase": "*"あなたのpackage.json最新のFirebaseをインストールします^3.1.0これはfirebaseと互換性がありません2.4.2

新しいドキュメントは ここ にあります

Index.htmlにfirebaseを含めて設定するには:

 <script src="https://www.gstatic.com/firebasejs/3.1.0/firebase.js"></script>


  <script>
    // Initialize Firebase
    // TODO: Replace with your project's customized code snippet
    var config = {
        apiKey: "your apiKey from firebase website",
        authDomain: "projectId.firebaseapp.com",
        databaseURL: "https://databaseName.firebaseio.com",
        storageBucket: "bucket.appspot.com",
      };
        firebase.initializeApp(config);

        var rootRef = firebase.database().ref();

</script>

新しいプロジェクトを作成することで、上記の設定を https://console.firebase.google.com/ で自動生成できます。

1
KB_

ホスティングプロジェクトの場合、Firebaseの前にローカルスクリプトファイルが読み込まれていることが問題です。これを防ぐには、次のように「deferred」をロードするだけです。

<script defer src="app.js"></script>

このおかげで post by Paul De Jong

0
hpm